我在这里进行了功能测试:
/spec/features/admin/user_controller_spec.rb
require 'rails_helper'
feature "user admin page" do
scenerio "abc..." do
user = create(:user)
login_with(user.email)
..
..
end
end
我有这个:
/spec/features/support/feature.rb
RSpec.configure do |config|
config.include Features::SessionHelpers, type: feature
end
/spec/features/support/features/session_helpers.rb
module Features
module SessionHelpers
def login_with(email, password = "Password123")
visit session_login_path
fill_in "login_form[email]", with: email
fill_in "login_form[password]", with: password
click_button "Sign In"
end
end
end
当我在某项功能上运行rspec时,我收到此错误:
NoMethodError:
undefined method `login_with' for #<RSpec::Examp...
我有一个rails_helper和一个spec_helper.rb文件。
答案 0 :(得分:1)
当您包含帮助程序时,您可以使用type
选项传入一个哈希,指定帮助程序应用于哪种类型的示例组。
type
的值应为:controller
,:model
,:feature
或:view
之一。在您的代码中,您传递变量feature
。它应该是一个符号。
config.include Features::SessionHelpers, type: :feature
如果您尝试运行规范,则会收到相同的错误,因为您不允许Rspec
知道您已在其中一个文件中添加了其他配置。为此,请在rails_helper.rb
require_relative './features/support/feature'
请注意,您也可以直接在rails_helper
。
这将让rspec运行feature.rb
中定义的配置,但您再次收到错误消息NameError: uninitialized constant Features
。如果您想一点,在feature.rb
中,您尝试包含Features::SessionHelpers
,但feature.rb
无法猜测模块的位置。您必须告诉它要求该模块具有以下声明
require_relative&#39; ./ features / session_helpers&#39;
现在,如果您尝试运行规范,希望您的测试将通过:)