gpt4 book ai didi

ruby-on-rails - 如何包含 rspec 的支持文件

转载 作者:行者123 更新时间:2023-12-03 21:06:26 26 4
gpt4 key购买 nike

我正在构建一个 Rails 4 应用程序。我创建了一个支持文件来模拟登录。这是文件

规范/支持/spec_test_helper.rb

module SpecTestHelper
def login(user)
request.session[:user_id] = user.id
end

def current_user
User.find(request.session[:user_id])
end
end

spec_helper.rb
config.include SpecTestHelper, :type => :controller

Controller 规范
describe BooksController, "user role" do

user = Fabricate(:user) do
role { Role.find_by_account_type("user") }
end

login(user)
end

支持文件给出未定义的方法错误。这是错误消息的一部分:
spec/controllers/books_controller_spec.rb:27:in `block in <top (required)>': undefined method `login' for #<Class:0x007f9f83193438> (NoMethodError)

我正在测试CanCan。我知道测试 CanCan 的正确方法是测试能力,但这已经完成了。

最佳答案

rspec 目录下可以有两个文件:rails_helper.rbspec_helper.rb .如果你想为依赖rails的类提供支持,你应该使用rails_helper告诉 rails 加载 'spec/support' 下的模块目录

Dir[Rails.root.join('spec/support/**/*.rb')].each { |f| require f }

要声明共享模块,您需要在配置 block 中使用它。
RSpec.configure do |config|
...
config.include <YourModuleName>::<YourClassName>, :type => :controller
...
end

但是,如果你的类根本不需要 rails,你可以在 spec_helper 下加载它。 ,它不会加载 rails 来运行测试。
引用 this answerthis reference了解更多信息。

关于ruby-on-rails - 如何包含 rspec 的支持文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20614213/

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