【发布时间】:2012-07-20 06:27:19
【问题描述】:
let(:product) { FactoryGirl.create(:product) }
it "should blah" do
product.name = "a"
product.save!
post :update, id: product.id, product: { name: "x" }
# assuming :update changes the product's name to params[:name]
product.reload.name.should == "x"
end
should 总是失败,除非我做类似的事情
Product.find(product.id).name.should == "x"
我是不是在滥用let?
如果我使用在before :each 和@product.reload 中创建的@product 就可以了。
【问题讨论】:
-
这很奇怪。您没有滥用
let- 它应该可以按您的预期工作。这是导致实际问题的实际规范吗?我假设不是。如果是这样,请您提供,因为问题可能有点复杂。 -
您的产品控制器如何知道要更新哪个产品实例?它会抓住最后一个创建的吗?数据库中是否可能已经有产品,而工厂女孩创建的产品不是列表的最后一个?
-
这可能不是确切的代码,但非常相似(更改了模型名称和属性名称)。它与所有模型都非常一致...
-
我也遇到了这个问题。花了将近半个小时才意识到。
标签: ruby-on-rails rspec rspec2