2011-06-07 98 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的。