2014-02-18 18 views
5

假設您正在開發一個rails應用程序,該應用程序有很多初始化函數,可以在啓動時調用各種外部系統。使用rspec測試rails而不需要運行所有初始化器?

使用rspec-rails運行rspec時,即使您的測試是簡單的,不需要rails基礎結構,它也會運行所有初始化程序。

我知道你可以使用Spork只承擔這個成本一次,但有沒有辦法不承擔它呢?加載所有的rails只是爲了一個簡單的PORO規範似乎很愚蠢。

+2

我在前幾天看到以下博客文章,我認爲這可能與您要找的內容有關:http://pivotallabs.com/spec-helper/ – Hesham

+0

@ H-man我認爲這不相關。 Ben Lakey有興趣只在'config/initializers'中加載一些初始化器 –

+0

確實如此,但這也可能會加快速度,因爲它會在運行簡單測試時阻止加載整個rails堆棧。 – Hesham

回答

4
  1. 請勿使用spork。如果你想使用preloader,看看宙斯或春天。
  2. 您不需要加載整個rails環境來測試不依賴rails的東西。這可以像明確要求每個規範所需的依賴關係一樣簡單,或者爲非rails事物創建完全獨立的minimal_spec_helper,或爲rails事物創建rails_spec_helper。
  3. 你的初始化程序是否真的「呼叫到各種外部系統」?如果這聽起來像,您的初始化程序正在進行外部網絡/ HTTP調用,這聽起來像一個可怕的想法。
相關問題