2014-06-10 38 views
71

我正在做Rails教程第二次。當我進入這個spec/rails_helper.rb與spec/spec_helper.rb有什麼不同?我需要它嗎?

rails generate integration_test static_pages 

我得到spec/rails_helper.rbspec/spec_helper.rb,而不是僅僅spec/spec_helper.rb

現在,當我跑我的測試中,他們不再(更多「冗長」),比當我做了這最後的時間慢。 我想知道兩個文件之間的區別是什麼,如果我做錯了什麼。 另外,有沒有辦法擺脫rails_helper.rb文件沒有搞亂一切?

+0

輸出什麼做你的測試產品,他們以前沒有生產? (可能屬於一個新問題。) –

+0

我對術語不太確定,但現在測試通過了每一個給我一個我不明白的東西列表的寶石,只有這樣,結果纔會出現。之前,它只是給出了結果。我會在這裏複製它,但它真的很長... – user3417583

+0

這可能是RSpec 3的棄用。如果你不能通過搜索或從這個http://myronmars.to/n/dev-blog/2014/05/notable-changes-in-rspec-3找到它們,把它們放在一個新的問題。 –

回答

102

rspec-rails 3生成spec_helper.rbrails_helper.rbspec_helper.rb適用於不依賴於Rails的規範(例如lib目錄中類的規範)。 rails_helper.rb適用於依賴於Rails的規範(在Rails項目中,大部分或全部)。 rails_helper.rb要求spec_helper.rb。所以不,不要擺脫rails_helper.rb;在你的規格中需要它(而不是spec_helper.rb)。

如果你希望你的非Rails的相關規範來執行,他們是無Rails的依賴,而當你自己運行它們,以儘可能快地運行,您可能需要spec_helper.rb而非rails_helper.rb那些。但是在.rspec-r rails_helper非常方便,而不是在每個spec文件中需要一個助手或其他助手,所以這肯定是一種流行的方法。

如果您使用的彈簧預加載器,每個類只需要加載一次,並且spring loads classes eagerly even if you only run a single spec that requires spec_helper,因此在某些文件中只需要spec_helper沒有太多的價值。

來源:https://www.relishapp.com/rspec/rspec-rails/docs/upgrade#default-helper-files

+0

非Rails規範是什麼意思?當然,在Rails項目中,所有規格都是Rails規格(或者說,所有規格都是非軌規格,具體取決於你如何看待它): – DazBaldwin

+0

我擴展了我的答案;看看是否清楚。 –

+1

感謝您的澄清 – DazBaldwin

相關問題