gpt4 book ai didi

ruby-on-rails - 在 rspec 中运行单个规范与完整套件时不同的 ActiveRecord 关联更新行为

转载 作者:太空宇宙 更新时间:2023-11-03 16:32:00 26 4
gpt4 key购买 nike

我有一个看起来像这样的规范:

foo.members << bar
# test some aspect of bar which assumes its membership in foo
  • 当我单独运行规范时(在命令行中将 rspec 指向文件,或者在检测到文件更改后使用 guard 运行整个文件或仅运行单个示例),它通过了。
  • 当我运行整个测试套件时(要么是整个测试套件,要么实际上只是调用整个测试套件,但在单个示例上使用 :focus 以便它仍然是唯一运行的测试套件,就像在上面的第一个要点中)它失败了。

这修复了它:

foo.members << bar
bar.reload # <-- the fix
# test some aspect of bar which assumes its membership in foo

所以出于某种原因,在第一种情况下,bar 的成员资格在内存中正确更新,而在第二种情况下则不是。为什么?

最佳答案

您可能想要隔离您套件中的其他规范(可能有多个)正在干扰相关测试。我建议您一次只针对该文件和另一个文件启动规范,继续这样做,直到找到使该规范失败的测试文件(这可以手动完成或通过 shell 脚本完成)。一旦您隔离了干扰此规范的其他规范,请告诉我们,然后我们可以从那里开始。

作为一般规则,您可能已经知道,测试应该相互独立,并且永远不应相互干扰。例如,请确保没有规范在删除方法或留下在数据库中创建的内容。

关于ruby-on-rails - 在 rspec 中运行单个规范与完整套件时不同的 ActiveRecord 关联更新行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14326616/

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