Так что, если ваш #create метод контроллера просто:Rspec испытывает трудности тестирования #create с помощью метода контроллера сборки
@testimonial = Testimonial.new(testimonial_params)
И проверить это в ваших спецификациях как так:
testimonials_controller_spec.rb
describe "POST #create" do
context "with VALID attributes" do
it "creates new testimonial" do
expect {
post :create, testimonial: FactoryGirl.attributes_for(:testimonial)
}.to change(Testimonial, :count).by(1)
end
end
end
Он отлично работает. Код:
post :create, testimonial: FactoryGirl.attributes_for(:testimonial)
Правильно.
Однако в моем TestimonialsController, мой метод создания на самом деле:
@testimonial = current_user.testimonials.build(testimonial_params)
Мой RSpec метод не работает с этим. Что следует использовать вместо:
post :create, testimonial: FactoryGirl.attributes_for(:testimonial)
?
Спасибо! Я не пробовал sign_in, потому что раньше у меня были проблемы с помощниками Devise, поэтому я предположил, что это не сработает. На этот раз я дал ему шанс, ожидая, что он не сработает, но это произошло. Должно быть, это было что-то, что я делал неправильно, пытаясь использовать помощников Devise с другой спецификацией. – Andy
В этом конкретном случае я закончил работу с sign_in FactoryGirl.create (: student), которая сработала. ВОПРОС: как бы я смоделировал пользователя с подписью без использования помощника Devise? – Andy