spi*_*ock 30 controller rspec ruby-on-rails-3 rails-generate
我正在将devise_invitable集成到我的应用程序中,我不得不编写一个自定义控制器 - InvitationsController - 来覆盖gem中的一些方法.现在,我想编写测试来涵盖我已完成的工作,但我无法弄清楚如何为新控制器生成规范.任何帮助将不胜感激.
谢谢!
pra*_*ase 48
rspec的方式是
rails g rspec:controller passwords
Run Code Online (Sandbox Code Playgroud)
它给
create spec/controllers/passwords_controller_spec.rb
Run Code Online (Sandbox Code Playgroud)
--update
您可以将应用程序配置为在创建模型或控制器时生成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
Run Code Online (Sandbox Code Playgroud)
now*_*owk 13
如果您正在使用Rails 3 + rspec并且安装了rspec(rails g rspec:install),它应该为您生成的每个控制器(以及其他对象)生成控制器规范.
如果你需要手工创建一个.只需创建一个新new_controller_name_spec.rb的spec/controllers.
require 'rails_helper'
describe NewControllerName do
# Test!
end
Run Code Online (Sandbox Code Playgroud)
您也可以尝试重新生成控制器文件,当它询问您是否要覆盖现有控制器时,请说" 否",并希望它将再次为该控制器重新生成rspec.
从 Rails 5 和 RSpec 3.5 开始,控制器规范文件不再是推荐的方法,而是 RSpec 创建名为 requests 的文件。这些文件通过测试向给定 URL 发出请求时发生的情况来测试控制器的输出。
考虑以下:
rails g rspec:controller fruits
在 Rails 5 之前的版本中,您将获得如下文件:
spec/controllers/fruits_controller_spec.rb
使用 Rails 5,您将获得如下文件:
spec/requests/fruits_request_spec.rb
RSpec 3.5 发行说明对此有更多说明:
Rails 团队和 RSpec 核心团队的官方建议是编写请求规范。请求规范允许您专注于单个控制器操作,但与控制器测试不同的是,它涉及路由器、中间件堆栈以及机架请求和响应。这增加了您正在编写的测试的真实性,并有助于避免控制器规范中常见的许多问题。
希望这对那些路过的人有所帮助,因为他们试图弄清楚为什么 Rails 没有制定控制器规格!
| 归档时间: |
|
| 查看次数: |
15598 次 |
| 最近记录: |