Rspec 2 配置:类型类型

Posted

技术标签:

【中文标题】Rspec 2 配置:类型类型【英文标题】:Rspec 2 config :type types 【发布时间】:2011-09-08 03:38:31 【问题描述】:

在我的 spec_helper.rb 我有

config.include Devise::TestHelpers, :type => :controller

这样我就可以实际测试需要对用户进行身份验证的控制器。但是,请求中同一类的规范也需要登录,否则测试将失败。我试过了

config.include Devise::TestHelpers, :type => :request

但这也不起作用。我似乎找不到可以传递给 rspec 的包含或扩展方法的类型选项。我假设 :model 和 :view 会在那里,但其他我完全不确定。我应该使用什么以便我的请求规范可以通过并且是否有 :type 的不同类型的列表?

【问题讨论】:

我也有同样的问题。有没有想过? 【参考方案1】:

这个提交应该有助于澄清: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) 替换为集成测试所在的文件夹名称。

【讨论】:

优秀。这将有助于为 Capybara 2.x 喜欢使用的新规范/功能目录包含一个宏文件。 config.escape_path 在我使用的最新 rspec 中不起作用config.include RakeTestHelper, :example_group => :file_path => %r(spec/api) 【参考方案2】:

也许为时已晚,但对于任何需要它的人来说,将类型更改为 :feature 对我有用:

config.include Devise::TestHelpers, :type => :feature

【讨论】:

以上是关于Rspec 2 配置:类型类型的主要内容,如果未能解决你的问题,请参考以下文章

devise 和 rspec-rails - 如何在请求类型规范(带有 type: :request 标记的规范)中登录用户?

rubymine配置 rspec

DatabaseCleaner + RSpec:正确的配置是啥?

如何全局配置 RSpec 以保持打开“--color”和“--format specdoc”选项

配置 RSpec 以对所有请求规范使用 Capybara.javascript_driver

RSpec 的 instance_double 方法的官方文档在哪里概述了如何配置方法的返回值?