gpt4 book ai didi

ruby-on-rails - 运行所有规范时,某些规范失败(有时),但仅运行特定文件时,它们(总是)通过

转载 作者:行者123 更新时间:2023-12-04 06:13:08 25 4
gpt4 key购买 nike

运行时 $ rspec在我的 Rails 4.1 应用程序中,user_spec.rb 中的一些规范失败:

104 examples, 5 failures, 2 pending

所有 5 个错误都是因为某个字段有两个错误而不是一个:
1) User creating a guest validates presence of name
Failure/Error: expect(@guest).to have(1).error_on(:name)
expected 1 error on :name, got 2
# ./spec/models/user_spec.rb:43:in `block (3 levels) in <top (required)>'
# -e:1:in `<main>'

错误总是双重的: @messages={:name=>["can't be blank", "can't be blank"]}> ,但应该是这样的: @messages={:name=>["can't be blank"]}> .

奇怪的是,当只运行指定的文件( $ rspec ./spec/models/user_spec.rb )时,这不会发生。
22 examples, 0 failures

我试过 $ git bisect ,但找不到问题所在。

所以如果有人可以请尝试结帐 https://github.com/jmuheim/communes/commit/0dee0d4983809bc19b6cb97ff9bab071fc866b02并运行规范( $ rspec$ rspec ./spec/models/user_spec.rb )并告诉我是否发生了双重错误,也许可以尝试帮助我调试问题,我会非常感激。

我怀疑 Spring 应用程序预加载器可能是问题的一部分,因为有时,在 Spring 明确停止( $ spring stop )后, $ rspec通过,有时没有。找不到模式,对我来说看起来很随机:
$ spring stop
Spring stopped.

$ rspec
Finished in 3.66 seconds
104 examples, 0 failures, 2 pending

$ spring stop
Spring stopped.

$ rspec
104 examples, 5 failures, 2 pending

我真的无法重现这种模式。非常奇怪和烦人/令人沮丧。任何帮助都受到高度赞赏。

最佳答案

这是我在谷歌搜索类似问题时遇到的第一个答案,所以我想添加我发现最有效的修复程序,以节省其他人的一些搜索。

rspec 3.3+ 有一个 --bisect将确定将失败的最小测试子集的命令。

使用已知会失败的种子运行它,并让它生成一小组您需要查看的规范。
rspec --seed 1245 --bisect
https://relishapp.com/rspec/rspec-core/docs/command-line/bisect

关于ruby-on-rails - 运行所有规范时,某些规范失败(有时),但仅运行特定文件时,它们(总是)通过,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24351729/

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