我正在运行 Rails 3.2.11,并相信我已经安装了 minitest 规范和 capybara,并且通过我的 gem 文件和 test_helper.rb 正常工作
我有以下集成测试:
describe "Products integration" do
fixtures :users, :businesses
it "shows product's name" do
visit root_path
fill_in "email", :with => users(:fu).email
fill_in "password", :with => "secret"
click_button "Log In"
assert_equal products_path, current_path
end
end
使用浏览器,一旦用户登录,他们就会被重定向到 products_path,其中显示了他们所有的产品。
我的示例用户夹具没有任何产品设置。因此,在我的 index.html.erb 中,该行<% if @products.present? %>
应该为 false,并且不应尝试显示任何行数据。情况并非如此,我的测试失败了Error: undefined method type_name for nil:NilClass
,因为它似乎试图写入表数据<td><%= product.product_type.type_name %></td>
导致 index.html.erb 的动作只包含@products = Product.includes(:product_type)
为什么对 products.present 的测试返回 true?并因此失败?