Ich habe diesen folgenden Fehler, während ich Ansichten in Rspec testet.Testen von Ansichten in Rspec, undefinierte Methode sammeln
1) Probleme/neu macht neues Problem Form
Failure/Error:
<div class="col-md-8 col-sm-8">
<%= f.select :approval_status, options_for_select(@approval_statuses.collect { |as| [as[0].humanize, as[0]] }, selected: @problem.approval_status), {}, class: "form-control" %>
</div>
ActionView::Template::Error:
undefined method `collect' for nil:NilClass
I @approval_statuses in Controller-Aktion bin vorbei. Es funktioniert gut in Ansichten, aber in Testfällen bekomme ich diesen Fehler.
Controller Aktion:
def new
@problem = Problem.new
@approval_statuses = Problem.approval_statuses
@visibilities = Problem.visibilities
end
In Modell
enum approval_status: {not_approved: 0, approved: 1}
In new.html.erb_spec.rb
require 'rails_helper'
RSpec.describe "problems/new", type: :view do
before(:each) do
assign(:problem, Problem.new())
end
it "renders new problem form" do
render
assert_select "form[action=?][method=?]", problems_path, "post" do
end
end
end
@approval_statuses ist null, fügen Sie bitte Ihre Controller-Aktion ein. –
@JuanManuelRodulfoSalcedo: Controller-Aktion hinzugefügt. –
Ich nehme an, dass Problem.approval_statuses Methode einige Daten aus der DB zurückgibt, also nehme ich an, dass Sie diese Samen nicht in der Testumgebung haben. –