我遇到了许多 Zeus 和 RSpec 用户似乎发生的情况。
假设我有以下规格:
# spec/views/messages/show.html.erb
require 'spec_helper'
describe "messages/show.html.erb" do
it "displays the text attribute of the message" do
render
rendered.should contain("Hello world!")
end
end
以及它测试的以下视图模板。
# app/views/messages/show.html.erb
Hello world!
我的密码是 rails 应用程序的根。当我运行时,rspec
我得到以下响应:
user@host $ rspec
.
Finished in 0.06264 seconds
1 example, 0 failures
Randomized with seed 9609
一切看起来都很好。但是,如果我使用zeus rspec spec
(zeus rspec
根本不起作用) 运行测试,我会得到以下输出。
user@host $ zeus rspec spec
.
Finished in 0.07292 seconds
1 example, 0 failures
Randomized with seed 0
F
Failures:
1) messages/show.html.erb displays the text attribute of the message
Failure/Error: render
NameError:
undefined local variable or method `render' for <RSpec::Core::ExampleGroup::Nested_2:0x936a0fc>
# ./spec/views/show.html.erb_spec.rb:5:in `block (2 levels) in <top (required)>'
# -e:1:in `<main>'
Finished in 0.00041 seconds
1 example, 1 failure
Failed examples:
rspec ./spec/views/show.html.erb_spec.rb:4 # messages/show.html.erb displays the text attribute of the message
我在 SO 上看到了几个与此类似的问题,例如:
zeus rspec 无法包含所需的文件,但仅 rspec 就可以了
Zeus + FactoryGirl::Syntax::Methods。未定义的方法“创建”
共同点是该解决方案建议从 spec_helper.rb 中注释/删除以下行(如果存在)。
require 'rspec/autorun'
require 'rspec/autotest'
我的问题是这些行没有出现在我的 spec_helper.rb 文件或应用程序的其他任何地方。
经过一番挖掘,我发现有问题的行实际上是在rspec
RSpec gem 的可执行脚本中。
我目前使用的是RSpec 2.13.1版本,文件内容如下:
#!/usr/bin/env ruby
begin
require 'rspec/autorun'
rescue LoadError
$stderr.puts <<-EOS
#{'*'*50}
Could not find 'rspec/autorun'
This may happen if you're using rubygems as your package manager, but it is not
being required through some mechanism before executing the rspec command.
You may need to do one of the following in your shell:
# for bash/zsh
export RUBYOPT=rubygems
# for csh, etc.
set RUBYOPT=rubygems
For background, please see http://gist.github.com/54177.
#{'*'*50}
EOS
exit(1)
end
从 RSpec 文档中可以看出,它是一种方便的方法,可以为您运行测试。奇怪的是,当我注释掉require 'rspec/autorun'
begin/rescue zeus 的部分时,仍然有相同的行为(抛出错误),但 rspec 不再以传统方式运行(只是运行rspec
命令)。根据本文档(https://www.relishapp.com/rspec/rspec-core/docs/command-line),您仍然可以运行它,只是以稍微冗长的方式。
无论如何,这向我暗示要么 zeus 要么依赖于rspec
exec 脚本以外的文件,要么问题与 spec_helper.rb 要求语句(rspec 2.13.1 没有添加到配置)。
有没有人遇到这种情况或走同样的路?
我很犹豫是否在 rspec-rails / rspec-core 或 zeus repos 上提出问题,因为我完全不确定哪个库会导致哪个库出现问题。
任何帮助都将非常感激。