【问题标题】:Testing return value of Controller method variable in Rspec在Rspec中测试Controller方法变量的返回值
【发布时间】:2019-02-19 11:45:04
【问题描述】:

在 Rails 应用程序中,我正在编写 Rspec 测试用例。

我有一个控制器文件,它有一个名为“index”的方法,它会将一些值返回给视图文件,这些值用作该特定视图文件中某个表的标题值。代码示例如下。

def index @some_variable = [I18n.t('controllerFileName.index.someTitle1'), I18n.t('controllerFileName.index.someTitle2')] end

sometitle1 和 sometitle2 将作为视图文件的标题。

我想在控制器中编写一个测试用例来测试控制器是否使用 Rspec 向视图文件返回正确的预期值。(即 Sometitle1 和 sometitle2 )。

我知道我们可以使用 Rspec 测试用例检查视图文件中的标题是否存在。只是想知道我们是否可以使用 Rspec 检查控制器文件中的返回值。

我是 Rspec 的新手。如果不可能或有办法做到这一点,请告诉我。

【问题讨论】:

    标签: ruby-on-rails unit-testing rspec controller rspec-rails


    【解决方案1】:

    你可以使用assigns进行测试:

    get :index
    expect(assigns(:some_variable)).to eq(['Title 1', 'Title 2'])
    

    参考:https://relishapp.com/rspec/rspec-rails/docs/controller-specs

    【讨论】:

    • 嗨,我试过这个方法。但我收到以下错误,Failure/Error: get :index ActionController::UrlGenerationError: No route matches {:action=>"index", :controller=>"some_files"}
    • get :index 只是一个例子。第二行是您如何检查控制器返回的值。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-10
    • 1970-01-01
    相关资源
    最近更新 更多