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

Ruby on rails 在rspec中运行单个规范和完整套件时,不同的ActiveRecord关联更新行为,ruby-on-rails,ruby,rspec,Ruby On Rails,Ruby,Rspec,我有一个类似这样的规范: foo.members << bar # test some aspect of bar which assumes its membership in foo 因此,出于某种原因,在第一种情况下,酒吧的成员资格在内存中得到了正确更新,而在第二种情况下则没有。为什么?您可能需要隔离套件中的哪些其他规范(可能有多个)干扰了相关测试。我建议您一次只启动该文件和另一个文件的规范,继续这样做,直到找到一个导致该规范失败的测试文件为止(这可以手动完成,也可以通过sh

我有一个类似这样的规范:

foo.members << bar
# test some aspect of bar which assumes its membership in foo

因此,出于某种原因,在第一种情况下,酒吧的成员资格在内存中得到了正确更新,而在第二种情况下则没有。为什么?

您可能需要隔离套件中的哪些其他规范(可能有多个)干扰了相关测试。我建议您一次只启动该文件和另一个文件的规范,继续这样做,直到找到一个导致该规范失败的测试文件为止(这可以手动完成,也可以通过shell脚本完成)。一旦你隔离了另一个干扰这个的规范,让我们知道,然后我们就可以开始了


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

您是否确认您的测试数据库与您的开发环境具有完全相同的体系结构?它与我的本地计算机上的服务器实例相同--您所说的体系结构是什么意思?我是说您的测试数据库架构。是的,我确信测试数据库是用相同的模式创建的
foo.members << bar
bar.reload # <-- the fix
# test some aspect of bar which assumes its membership in foo