gpt4 book ai didi

ruby-on-rails - 如何使用 RSpec 测试嵌套的 Ruby on Rails Controller ?

转载 作者:行者123 更新时间:2023-12-04 05:13:56 27 4
gpt4 key购买 nike

我有一个名为 PagesController 的 Rails Controller 在 app/controllers/sevenpages/public/pages_controller.rb 中嵌套如下:

module Sevenpages
module Public
class PagesController < ApplicationController
layout nil
def show
end
end
end
end

我想使用 RSpec 测试这个 Controller

当我在 spec/controllers/sevenpages/pubic/pages_controller_spec.rb 中创建以下测试时:
require 'spec_helper'

describe Sevenpages:Public::PagesController do
describe 'GET #show' do
get :show, use_route: :sevenpages
{{ tests go here }}
end
end

我收到以下错误:
undefined method `get' for #<Class:0x007fe5c88e4300> (NoMethodError)

现在我明白这个错误信息的意思了。问题在于 RSpec::Rails::ControllerExampleGroup方法不会自动包含在 Controller 测试中,因此标准 Rails 方法,例如 get , post等在测试中不可用。

我已经尝试了所有推荐的解决方案,我可以在没有运气的情况下找到。这是我尝试过的:
  • 确保 spec/spec_helper.rb包含 require 'rspec/rails'
  • 使用以下命令显式声明测试类型:
    describe Sevenpages::Public::PagesController, type: :controller do
  • 使用以下命令显式包含 Controller 示例组:
    include RSpec::Rails::ControllerExampleGroup在 Controller 主体

  • 我不知道我还能尝试什么。我应该注意到我正在使用:
  • rails 3.2.11
  • RSpec 2.12.2

  • 我的应用程序是 Rails 引擎,因此 use_route get 的参数方法。

    我唯一能想到的是 RSpec 不知道如何处理嵌套这么深的 Controller 。是否有一些我应该注意的语法以使 RSpec 能够将其正确解析为 Controller 测试?

    最佳答案

    您上面发布的代码在描述块中进行了测试。通常使用 Rspec 将测试放在“it”块中。像:

    describe Sevenpages:Public::PagesController do
    describe 'GET #show' do
    it 'should work' do
    get :show, use_route: :sevenpages
    {{ tests go here }}
    end
    end
    end

    如果您尝试这样做,该方法是否会被正确定义?

    关于ruby-on-rails - 如何使用 RSpec 测试嵌套的 Ruby on Rails Controller ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14553642/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com