无法使shared_contexts在rspec 3.9.0 / rspec-rails 4中工作
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了无法使shared_contexts在rspec 3.9.0 / rspec-rails 4中工作相关的知识,希望对你有一定的参考价值。
在早期版本的rspec中,我可以做类似的事情:
spec / models / test_spec.rb
require 'rails_helper'
describe 'something', :foobar do
it 'does not seem to be working' do
puts lol
end
end
spec / support / foobar.rb
shared_context 'foobar', :foobar do
let(:lol) { 'haha' }
end
spec / rails_helper.rb
...
RSpec.configure do |config|
Dir[Rails.root.join('spec/support/**/*.rb')].each { |f| require f }
end
这将很好地工作,我的规范将可以访问在共享上下文中定义的任何方法/ let ...但是,当升级到rspec-rails 4时,这将导致:]]
Failure/Error: puts lol NameError: undefined local variable or method `lol' for #<RSpec::ExampleGroups::...
Rspec的最新文档说:
我们还添加了一个配置选项,可让您确定共享方式处理上下文元数据:
RSpec.configure做| config | config.shared_context_metadata_behavior=:trigger_inclusion#或config.shared_context_metadata_behavior =:apply_to_host_groups end前一个值(:trigger_inclusion)是默认值,仅用于向后兼容。它对待传递给RSpec.shared_context的元数据的确切处理方式RSpec 3.4及更早版本:它会触发包含匹配项的组元数据。我们计划在RSpec 4中删除对此的支持。
后一个值(:apply_to_host_groups)选择加入新行为。它不是触发包含匹配元数据的组中的内容,而是将元数据应用于主机组。例如,您可以专注于通过标记共享上下文来使用数据库的所有组:
RSpec.shared_context“数据库支持”,:focus do#... end
但是,在阅读了5遍之后,我仍然不知道“ apply_to_host_groups”实际上是什么意思。什么是
host group
?无论如何,设置该配置选项都不能解决此问题。
我已验证是否已加载规范/支持中的文件,但是由于任何原因,使用共享上下文元数据标记的示例组中定义的let /方法均不可用。我在做什么错?
在早期版本的rspec中,我可以执行以下操作:spec / models / test_spec.rb要求'rails_helper'描述'某物',:foobar是否执行'似乎不起作用'会使大声笑结束...] >
require 'rails_helper'
describe 'something' do
include_context 'foobar'
it 'does not seem to be working' do
puts lol
end
end
以上是关于无法使shared_contexts在rspec 3.9.0 / rspec-rails 4中工作的主要内容,如果未能解决你的问题,请参考以下文章
无法在 Ubuntu 上使用 rspec 和 elasticsearch-extensions 进行测试
rails-rspec 错误无法加载此类文件 -- rspec/core/formatters/progress_formatter