首页 > 解决方案 > 分配如何知道在集成测试中在哪里寻找实例变量?

问题描述

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

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

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.

标签: ruby-on-railsrubyrspec

解决方案


事实证明,Rails 将集成测试视为功能测试,因此文档中为后者描述的实例变量适用于前者。在集成测试中,这些变量往往会被覆盖,因此您将在调用之前访问状态。

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

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

assings只是包装对@controller.view_assigns所有可用于视图的实例变量的访问。


推荐阅读