web-dev-qa-db-ja.com

rspecを使用してコントローラースペックを生成するにはどうすればよいですか?

私はdevise_invitableをアプリケーションに統合しており、gemのいくつかのメソッドをオーバーライドするためにカスタムコントローラー(InvitationsController)を作成する必要がありました。今、私は自分が行ったことをカバーするためのテストを書きたいのですが、新しいコントローラーの仕様を生成する方法がわかりません。どんな助けでも大歓迎です。

ありがとう!

30
spinlock

rspecの方法は

Rails g rspec:controller passwords

それは与えます

create  spec/controllers/passwords_controller_spec.rb

- 更新

モデルまたはコントローラーの作成時にrspecを生成するようにアプリケーションを構成できます。 config /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
46
prasad.surase

Rails 3 + rspecを使用していて、rspec(Rails g rspec:install)をインストールした場合、生成する各コントローラー(およびその他のオブジェクト)のコントローラー仕様が生成されます。

手作業で作成する必要がある場合。 new_controller_name_spec.rbに新しいspec/controllersを作成するだけです。

require 'Rails_helper'

describe NewControllerName do
  # Test!
end

また、既存のコントローラーを上書きするかどうかを尋ねられたときに、コントローラーファイルを再生成することもできます。たとえば、Noとすると、そのコントローラーのrspecが再度生成されます。

12
nowk