我是Ruby on Rails世界的新手。
我注意到至少有一种方法可以从测试用例中访问控制器实例变量。
确实,假设这种测试方法:
test "should get index" do
get :index
assert_response :success
assert_not_nil assigns(:products)
end
products
是相关控制器中包含的实例变量。当然,测试用例参考了这个控制器。因此assigns()
方法使用它来检查控制器实例变量的散列,从而允许从之前调用此控制器的任何其他文件访问任何精确对象。
所以我想知道两个问题:
为什么不为控制器创建“绑定”而不是使用assigns()
方法?
我想象一个可以做到的版本:
test "should get index" do
get :index
assert_response :success
assert_not_nil @products
end
它不会更短更清洁吗?
绑定是允许ERB文件访问控制器实例变量的机制,如下所示:
http://rrn.dk/rubys-erb-templating-system
这种适用于测试用例的机制是什么? assigns()
方法是必不可少的吗?
答案 0 :(得分:7)
如果你带来了绑定,那么这可能会通过而且不应该
test "should get index" do
@fake_products = [1,2,3]
get :index
assert_response :success
assert_not_nil @fake_products
end
您不一定希望测试中的所有实例变量都与控制器中的实例变量结合使用。 Assigns允许您将断言“范围”到控制器实例变量。