分配者如何知道在集成测试中应在哪里寻找实例变量?

时间:2019-05-16 17:00:00

标签: ruby-on-rails ruby rspec

我一直在关注Rails教程,并且了解Rspec的assigns方法。

这是它在集成测试中的使用方式:

class SomeTest < ActionDispatch::IntegrationTest
  test "simplified test" do
    get '/some/path'
    #some assertions
    get '/other/path'
    assert_equal 'changed', assigns(:some_variable)
  end
end

分配者似乎正在访问上一个呼叫的控制器/视图。

是这样吗? assigns如何到达实例变量some_variable

似乎暗示可以从assigns访问的集成测试中保留了某些状态。

1 个答案:

答案 0 :(得分:0)

事实证明,Rails对集成测试的处理与功能测试非常相似,因此documentation中描述的实例变量在后者中适用。在集成测试中,这些变量往往会被覆盖,因此您将在调用之前访问状态。

这意味着您可以在集成测试中访问:

  • @controller:最后一个被调用的控制器
  • @request:最近发送的请求
  • @response:最后返回的响应对象

assings仅包装对@controller.view_assigns的访问,其中保存了所有可用于视图的实例变量。