Как сгенерировать спецификацию контроллера с помощью rspec? - PullRequest
28 голосов
/ 08 июня 2011

Я интегрирую devise_invitable в свое приложение, и мне пришлось написать собственный контроллер - InvitationsController - чтобы переопределить несколько методов в геме.Теперь я хочу написать тесты, чтобы охватить то, что я сделал, но я не могу понять, как создать спецификацию для нового контроллера.Любая помощь будет принята с благодарностью.

Спасибо!

Ответы [ 2 ]

46 голосов
/ 25 июня 2013

способ 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
12 голосов
/ 08 июня 2011

Если вы используете Rails 3 + rspec и вы установили rspec (rails g rspec:install), он должен генерировать спецификации контроллера для каждого сгенерированного вами контроллера (и других объектов).

Если вам нужно создать его вручную. Просто создайте новый new_controller_name_spec.rb в вашем spec/controllers.

require 'rails_helper'

describe NewControllerName do
  # Test!
end

Вы также можете попытаться заново сгенерировать файл контроллера, скажем Нет , когда он спросит вас, хотите ли вы перезаписать существующий контроллер, и, надеюсь, он снова сгенерирует rspec для этого контроллера.

...