在Rails创建的功能测试中(使用脚手架生成模型时),有一个如下所示的测试:
test "should create product" do
assert_difference('Product.count') do
post :create, ...
end
assert_redirected_to ...
end
我的问题是,Product.count
实际评估了什么?
它是products
表中的行数吗?
答案 0 :(得分:1)
是产品表中的行数吗?
简短回答 - 是的
实际上它正在运行ruby代码Product.count,它恰好执行sql来获取products表中所有记录的计数。
我相信它在评估块之前运行代码,然后重新运行它并在块执行后比较值
http://api.rubyonrails.org/classes/ActiveRecord/Calculations.html#method-i-count
http://api.rubyonrails.org/classes/ActiveSupport/Testing/Assertions.html#method-i-assert_difference