在我的spec_helper.rb中我有
config.include Devise::TestHelpers, :type => :controller
这样我就可以实际测试需要用户进行身份验证的控制器。但是,请求中同一类的规范也需要登录,否则测试将失败。我试过了
config.include Devise::TestHelpers, :type => :request
但这也不起作用。我似乎无法找到我可以传递给rspec include或extend方法的类型选项。我假设:模型和:视图会在那里,但其他我完全不确定。我应该使用什么,以便我的请求规范可以通过,并且有一个不同类型的列表:type?
答案 0 :(得分:27)
此提交应有助于澄清:type
选项。
https://github.com/rspec/rspec-rails/commit/fc5cdbb603f0e66f9f3d19a0a60a775e124fb218
:type => :request
有效,所以我不确定为什么你的测试失败了。
哪个目录包含您的集成测试?通常,它们位于spec/requests
或可能spec/integration
。
您可以使用其他选项指定何时包含Devise :: TestHelpers;选项为:example_group
:
config.include Devise::TestHelpers, :example_group => {
:file_path => config.escaped_path(%w[spec (requests|integration)])
}
现在,Devise :: TestHelpers将包含在其文件位于指定路径内的示例组中。
确保将数组成员(requests|integration)
替换为集成测试所在的文件夹名称。
答案 1 :(得分:4)
也许为时已晚,但对于任何需要它的人来说,将类型更改为:feature
对我有用:
config.include Devise::TestHelpers, :type => :feature