0

我有2个_spec文件:第一个包含单元测试,另一个包含一些集成测试。Rspec测试失败如果一起运行

通过指定文件名来运行它们时,它们是绿色的,当它们作为“rspec”运行时,其中3个失败。

我正在使用database_cleaner gem来清理每个测试周围的测试数据库。

config.use_transactional_fixtures = false 

    config.before(:suite) do 
    DatabaseCleaner.strategy = :transaction 
    DatabaseCleaner.clean_with(:truncation) 
    end 

    config.before(:each) do 
    DatabaseCleaner.start 
    end 

    config.after(:each) do 
    DatabaseCleaner.clean 
    end 

我使用“let”来实例化对象和FactoryGirl来创建示例对象。

有没有人遇到过这样的事情?

+0

这听起来像数据库没有在测试之间正确重置 - 您可能可以验证这是什么情况下确切的失败(即如果您正在检查集合大小和有多余的元素) 。 它也可能是测试之间的合法冲突 - 它取决于故障是什么,以及故障是否依赖于顺序。 – oowowaee

+0

@oowowaee我已经修复了从def移动到实例化对象。现在按预期工作,DatabaseCleaner也是如此 – matteoredz

回答

1

的一些问题可能是:你正在修改和测试之间不进行重置

  • 类变量。类变量是反模式,通常应该避免。
  • 你不能像常量那样正确地存根。

任何在测试之间保持状态都会导致您看到的问题。使用您的调试器在每次测试中检查对象的状态。

+0

这并没有提供问题的答案。一旦你有足够的[声誉](https://stackoverflow.com/help/whats-reputation),你将可以[对任何帖子发表评论](https://stackoverflow.com/help/privileges/comment);相反,[提供不需要提问者澄清的答案](https://meta.stackexchange.com/questions/214173/why-do-i-need-50-reputation-to-comment-what-c​​an- I-DO-代替)。 - [来自评论](/ review/low-quality-posts/17574307) – rafalmp

0

我已经解决了我的问题,从def移动到let。注意定义