2014-06-19 77 views
1

我在閱讀完Rails指南docs 後注意到minitest隨附較新的Ruby版本,所以它立即可用,無需安裝其他任何東西。 Rails 4默認使用它。Rails 4 Minitest最小安裝

如果事實上我使用minitest-reporter寶石,它的工作就像魅力。

的混亂是當我看到的例子限定:test組的Gemfile的是這樣的:

group :test do 
    gem 'minitest-rails' 
    gem 'minitest-rails-capybara' 
    gem 'minitest-colorize' 
    gem 'minitest-focus' 
end 

爲什麼有必要包括minitest-rails寶石??要使用一些以後的導軌或其他類型的規格?

我有點困惑在這裏,所以任何有關Rails 4 Minitest集成的想法將不勝感激。

回答

1

minitest-rails已經是minitest-rails-capybara的一個依賴關係,您正在使用它並將其添加到test組。

因此,無論您是否將minitest-rails明確添加到Gemfile中,它都會爲您的應用程序安裝。但是,您可能希望明確指定要使用的特定版本的minitest-rails,並且在這種情況下,您應該使用所需版本(您在代碼中未執行的操作)將Gem添加到Gemfile中。

2

根據迷你測試軌道README,它使得測試的Rails生成器將以最小的風格生成。它也使得它最小的風格實際上在Rails ActiveSupport :: TestCase測試類中起作用。 (這就是Rails測試用例所做的)。

minitest附帶ruby,但Rails的ActiveSupport :: TestCase,Rails測試類都是,通常不會使用minitest。 minitest導軌使它如此。

該項目旨在啓用Rails TestCase類中的Minitest。您的測試將繼續從ActiveSupport :: TestCase繼承,它現在將支持spec DSL。您可以生成與標準模型,控制器,資源和其他發電機測試文件:

https://github.com/blowmage/minitest-rails

一兩件事,使這更令人困惑的是,在寶石的較新版本[我無意中說「的Rails '之前,但是它的更新版本是重要的],確實Minitest在那裏,舊的Test :: Unit不是。但Minitest有一種「假裝爲Test :: Unit」模式 - 這就是Rails ActiveSupport :: TestCase通常使用的舊測試::單元測試風格 - 即使它實際上是最小的庫提供它。 minitest導軌使其支持更新的Minitest::Spec::DSL風格。

+0

因此,如果我不想Minitest Spec DSL風格,並且我想使用minitest(更新版本的rails),我不需要在Gemfile中包含任何東西? –

+0

如果你不想Minitest Spec DSL ......你爲什麼在乎你是否使用Minitest?你怎麼知道它的區別?但是,是的,如果您使用_ruby_的更新版本(無論Rails版本如何),minitest可能會涉及到內部,儘管它提供的API旨在與舊版Test :: Unit兼容。 – jrochkind

1

如果您對使用Minitest的規格DSL沒有興趣,那麼您不需要包含minitest-rails。如果你對Capybara的spec DSL沒有興趣,那麼你不需要包含minitest-rails-capybara,但是如果你想使用Capybara,你需要一些其他機制來將它添加到你的應用程序中。 minitest-capybara寶石不做任何軌道集成。

即使您使用測試樣式測試而不是spec樣式測試,也可能會添加這兩個庫以添加水豚支持。 minitest-rails-capybara gem在測試樣式和規格樣式中添加了用於水豚測試的發生器。在您的Gemfile上嘗試git blame以查找添加了這兩行的提交,因爲提交消息可能會解釋爲什麼它們在應用程序中。