我正在尝试加强对Rails和BDD工作流的理解,所以我想从小事做起,使用RSpec创建一个迷你博客。目前我有一个ArticlesController和Article模型,还有相关的RSpec文件。Article非常简单,只有标题:字符串和内容:文本,ArticlesController是RESTful的。虽然我手写了Article的MCV,但它与使用脚手架创建的基本相同。
但是,当涉及到用RSpec进行PUT更新的测试时,我真的不知道该怎么做。我正在使用Factory Girl创建文章对象,到目前为止,我的代码看起来像:
#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 的理解问题。如果我错了,请告诉我 - 谢谢!