2011-06-07 103 views
25

我正在將devise_invitable集成到我的應用程序中,並且我必須編寫一個自定義控制器 - InvitationsController來覆蓋gem中的幾個方法。現在,我想編寫測試來覆蓋我所做的,但我無法弄清楚如何爲新控制器生成規範。任何幫助將不勝感激。如何使用rspec生成控制器規格?

謝謝!

+0

對於預先定義的規格SPEC文件,你可以檢查我的答案在此的其他問題http://stackoverflow.com/a/30808557/895789 – 2015-06-12 17:06:37

回答

41

RSpec的方式是

rails g rspec:controller passwords 

它給

create spec/controllers/passwords_controller_spec.rb 

--update

你可以配置你的應用程序創建的模型或控制器時產生rspec的。 添加到配置/ application.rb中

# don't generate RSpec tests for views and helpers. 
config.generators do |g| 
    g.test_framework :rspec, fixture: true 
    g.fixture_replacement :factory_girl, dir: 'spec/factories' 

    g.view_specs false 
    g.helper_specs false 
end 

$rails g model category 
    invoke mongoid 
    create app/models/category.rb 
    invoke rspec 
    create  spec/models/category_spec.rb 
    invoke  factory_girl 
    create  spec/factories/categories.rb 
$rails g controller categories 
    create app/controllers/categories_controller.rb 
    invoke haml 
    create app/views/categories 
    invoke rspec 
    create spec/controllers/categories_controller_spec.rb 
    invoke helper 
    create app/helpers/categories_helper.rb 
    invoke rspec 
    invoke assets 
    invoke coffee 
    create  app/assets/javascripts/categories.js.coffee 
    invoke scss 
    create  app/assets/stylesheets/categories.css.scss 
12

如果您使用Rails 3 + rspec並且安裝了rspec(rails g rspec:install),它應該爲您生成的每個控制器(和其他對象)生成控制器規格。

如果您需要手動創建一個。只需在您的spec/controllers中創建一個新的new_controller_name_spec.rb

require 'rails_helper' 

describe NewControllerName do 
    # Test! 
end 

您也可以嘗試重新生成控制器文件,說沒有當它問你是否要覆蓋現有的控制器,並希望它會再次再生該控制器的RSpec的。