2011-06-03 92 views
28

在我spec_helper.rb我有Rspec的2配置:類型類型

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

,這樣我可以實際測試我的控制器,要求用戶進行身份驗證。但是,請求中同一類的規範也需要登錄,否則測試將失敗。我試過

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

但這也不管用。我似乎無法找到我可以傳入rspec包含或擴展方法的類型選項。我假設:模型和:視圖會在那裏,但其他人我完全不確定。我應該使用什麼,所以我的請求規範可以通過,並有一個不同類型的列表:type?

+0

我有同樣的問題。有想過嗎? – Karl 2011-08-12 23:44:03

回答

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)]) 
} 

現在,設計:: TestHelpers將被納入例如團體,其文件在指定的路徑內。

確保使用集成測試所在的文件夾名稱替換陣列成員(requests|integration)

+0

非常好。這將有助於包含Capybara 2.x喜歡使用的新spec/features目錄的宏文件。 – sockmonk 2013-02-13 04:04:17

+0

config.escape_path在最新的rspec中不起作用我使用過'config.include RakeTestHelper,:example_group => {:file_path =>%r(spec/api)}' – Calin 2014-05-01 06:53:46

4

也許爲時已晚,但任何人誰需要它,改變類型:feature工作對我來說:

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