3

我是 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-template-system

这种机制不适用于测试用例吗?方法是assigns()必不可少的吗?

4

1 回答 1

7

但是,如果您带来了绑定,这可能会通过并且不应该

test "should get index" do
    @fake_products = [1,2,3]
    get :index
    assert_response :success
    assert_not_nil @fake_products
end

您不一定希望测试中的所有实例变量都与控制器中的实例变量相结合。分配允许您将断言“限定”到控制器实例变量。

于 2012-06-26T15:06:02.427 回答