vin*_*ntp 2 rspec ruby-on-rails draper
在 Rails 4 上,当我对装饰器执行 rspec 测试时,出现以下错误:
/app/spec/decorators/my_decorator_spec.rb:3:in `<top (required)>': uninitialized constant MyDecorator (NameError)
Run Code Online (Sandbox Code Playgroud)
我肯定错过了一些东西,但我不知道是什么。
我生成装饰器
rails g decorator My
Run Code Online (Sandbox Code Playgroud)
生成一个spec/my_decorator_spec.rb文件,内容为:
require 'spec_helper'
describe MyDecorator do
end
Run Code Online (Sandbox Code Playgroud)
然后我测试
rspec spec/decorators/my_decorator_spec.rb
Run Code Online (Sandbox Code Playgroud)
我没有在 application.rb 或 spec_helper.rb 中添加任何内容。装饰器本身工作正常。
编辑
这比我预想的更奇怪。当我测试所有 rspec 文件时,装饰器规范文件中的测试会正确执行。
有用 :
rspec spec/
Run Code Online (Sandbox Code Playgroud)
它没有:
rspec spec/decorators
rspec spec/decorators/my_decorator_spec.rb
Run Code Online (Sandbox Code Playgroud)
这是因为装饰器规范是在文件顶部生成的,require 'spec_helper'而不是require 'rails_helper'在文件顶部生成的。当您在装饰器规范之前运行其他规范时(例如,运行时的控制器规范,rspec spec/因为 c 在 d 之前),那么它们最终会在装饰器规范运行之前需要正确的文件,所以一切都很好。
解决方案是在装饰器规范中用rails_helper 替换spec_helper 要求:
perl -pi -e 's/spec_helper/rails_helper/' spec/decorators/*
Run Code Online (Sandbox Code Playgroud)
一旦你这样做了,你的运行应该就没有问题了rspec spec/decorators。
注意:此更改已在 draper 存储库中进行,但它是在 gem 版本 2.1.0 发布后进行的,这是 gem 的最新非预版本。
| 归档时间: |
|
| 查看次数: |
693 次 |
| 最近记录: |