2012-05-04 52 views
2

我用Rails 3RSpec的是不是產生了我的模型規範文件和控制器

我加rspec-railsGemfile Rails應用程序:

group :development, :test do 
    gem 'rspec-rails' 
end 

,然後我跑bundle install。它顯示了我的寶石列表,以及所有的rspec寶石(核心,導軌等)。

然而,當我運行

rails g rspec:install 

這就是它返回:

create .rspec 
create spec 
create spec/spec_helper.rb 

雖然我有模型和控制器在我的應用程序,它只是創建這些文件。爲什麼不是Rspec創建規格文件?

回答

3

Rspec不會自動爲您現有的型號和控制器創建規格。你現在必須自己創建這些文件。

+5

不要驚訝於這個答案,創建一個spec文件非常簡單。只需製作一個以'_spec.rb'結尾的文件並將其放在它中:'require'spec_helper';描述User do; (當然用你正在測試的課程替換用戶),你就在那裏。 – iain

1

這不再是真實的,您可以設置生成器以在腳手架中創建RSpec特定測試文件。您也可以使用它爲您的應用的以前創建的部分創建測試文件。

主要功能在於應用程序的生成器配置,所有配置都以發生器上的單個配置塊開始。下面是一些最常用的設置,尤其是塊:

配置/環境/ development.rb //或任何ENV你想

Rails.application.configure do 
... 
    config.generators do |g| 
    g.test_framework :rspec 
    g.fixture_replacement :factory_girl 
    g.factory_girl dir: 'spec/factories' 
    end 
end 

發生器設置

的「 test_framework'選項允許rails generator精確地知道你正在使用哪個測試框架,並根據你的框架生成新的文件。例如,RSpec默認爲spec目錄,因此在該文件中創建新的測試文件。

利用'fixture_replacement',我們可以避免生成文件,當Factory Girl的工廠使用其他選項時,我們將不會使用它。有了這個配置,燈具將被忽略,並在他們的地方創建工廠。

最後是'factory_girl'選項,在這個特定的實例中,我設置了工廠目錄。即使使用5.1,也不要設置默認工廠測試/工廠,所以如果你使用RSpec,你需要設置'dir'選項來指向正確的目錄。您可以在Factory Girl Instructions中找到更多選項。

現在,當我們產生新的東西,像模特:

> rails g model settings 
    invoke active_record 
    create db/migrate/20170915173537_create_settings.rb 
    create app/models/setting.rb 
    invoke rspec 
    create  spec/models/setting_spec.rb 
    invoke  factory_girl 
    create  spec/factories/settings.rb 

生成測試文件有關的應用程序

先前生成的零件在某些情況下,你可能會發現自己在增加一個新的測試框架大量的腳手架已經被創建,並且已經創建了大量的測試文件。隨着發生器選項的改變,我們實際上可以爲現有的模型,控制器和其他一切生成測試文件。

與創建您的rails文件類似,您只需添加一個附加標誌。舉個例子,假設我有一個名爲'old_settings'的舊模型,它是在rspec被添加到應用程序之前創建的。除了測試文件位於測試文件夾之外,該模型以及與之一起生成的所有文件均存在。

> rails g rspec:model old_settings 
    create spec/models/old_settings_spec.rb 
    invoke factory_girl 
    create spec/factories/old_settings.rb