Я пытаюсь закрепить мое понимание рельсов и рабочего процесса BDD, поэтому я хотел начать с малого, создав один из этих мини-блогов, но с помощью rspec. Прямо сейчас у меня есть ArticlesController и модель Article, и связанные файлы rspec. Article очень прост, имеет только title: string и content: text, а ArticlesController является RESTful - хотя я и написал MCV для Article, он в основном такой же, как если бы я использовал скаффолд для его создания.
Однако я не совсем понимаю, что я делаю, когда дело доходит до написания теста в rspec для обновления PUT. Я использую Factory Girl для создания объекта article, и пока мой код выглядит так:
#factories.rb
FactoryGirl.define do
factory :article do
title "a title"
content "hello world"
end
#articles_controller_spec.rb
before(:each) do
@article = Factory(:article)
end
describe "PUT 'update/:id'" do
it "allows an article to be updated" do
@attr = { :title => "new title", :content => "new content" }
put :update, :id => @article.id, :article => @attr
response.should be_successful
end
end
Однако я продолжаю получать:
Failures:
1) ArticlesController PUT 'update/:id' allows an article to be updated
Failure/Error: response.should be_successful
expected successful? to return true, got false
Что я делаю не так? И я использую правильные инструменты? Когда я запускаю свой тестовый сервер, «Создать», «Редактировать», «Уничтожить» всю работу так, как я ожидал, поэтому я предполагаю, что это проблема с моим пониманием RSpec. Дайте мне знать, если я ошибаюсь - спасибо!