gpt4 book ai didi

ruby-on-rails - Zeus 在运行 RSpec 时抛出错误

转载 作者:行者123 更新时间:2023-12-04 08:52:35 28 4
gpt4 key购买 nike

我遇到的情况似乎发生在 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

以及它测试的以下 View 模板。
# 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 fails when testing with Rspec

zeus rspec fails include required files, but rspec alone does fine

Zeus + FactoryGirl::Syntax::Methods. undefined method `create'

共同点是解决方案建议从 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 require 语句(rspec 2.13.1 未添加到配置中)的关系并不那么明显。

有没有人遇到这种情况或走上同样的道路?

我很犹豫要不要在 rspec-rails/rspec-core 或 zeus 存储库上提出问题,因为我完全不确定哪个库导致了哪个问题。

任何帮助都将不胜感激。

最佳答案

根据 this在查看规范时,您应该遵循规范文件命名约定。尝试重命名:

spec/views/messages/show.html.erb


spec/views/messages/show.html.erb_spec.rb

它可能会有所帮助。

关于ruby-on-rails - Zeus 在运行 RSpec 时抛出错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16989655/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com