Rspec测试间歇性地失败并且看似随机

时间:2013-08-16 11:41:05

标签: ruby-on-rails rspec

这很难解释,我不知道如何解决它。

如果我一次性运行所有测试,那么每次都会失败。但是,如果我使用focus: true单独运行每个块,它们会通过..而且,如果我手动添加测试使用相同的方法,他们将通过,直到我达到五个测试。

没有押韵也没有理由,或者实际上是任何逻辑。我特意添加了一个空白测试,看看是否有一些线程/变量问题,但它们仍然失败。这没有意义。

更糟糕的是1/20测试实际上会通过。

  • 使用Rails4,Zeus(我已经尝试过没有)和Guard(也尝试过没有)
  • 使用数据库清理器,我在每个块之后截断表
  • 我已经确认每次运行都会重新创建模型

我有以下(简化代码)。虽然它似乎没有什么区别。

before(:each) do
  @location = FactoryGirl.create(:location_full)
  @location.generate_defaults ## usually in a callback
  @mac = 'Some var'
end

it "checks the location's access is updated to var 1", focus: true do
  @location.update(bar: true)
  var = @location.generate_something(mac: @mac)
  var[:xyz].should eq 123
end    

...

it "checks the location's access is updated to var 2", focus: true do
  @location.update(bar: false)
  var2 = @location.generate_something(mac: @mac)
  var2[:xyz].should eq 456
end    

...

it "is a dummy test", focus: true do
  # nothing
end

测试失败!

我认为这是留在记忆中的东西,所以我甚至试图在每次记录之前销毁所有记录。我尝试过睡眠,重新加载记录,更改数据库。

以前我被ActionController :: Live卡在控制器测试中,但后来被删除了。

不知道在哪里看或做什么。任何(明智的)建议都欢迎。请注意,这仅在升级到RoR4后才会发生。

rails (4.0.0)
  actionmailer (= 4.0.0)
  actionpack (= 4.0.0)
  activerecord (= 4.0.0)
  activesupport (= 4.0.0)
  bundler (>= 1.3.0, < 2.0)
  railties (= 4.0.0)
  sprockets-rails (~> 2.0.0)

rspec (2.13.0)
  rspec-core (~> 2.13.0)
  rspec-expectations (~> 2.13.0)
  rspec-mocks (~> 2.13.0)

guard (1.8.2)
  formatador (>= 0.2.4)
  listen (>= 1.0.0)
  lumberjack (>= 1.0.2)
  pry (>= 0.9.10)
  thor (>= 0.14.6)

guard-rspec (3.0.2)
  guard (>= 1.8)
  rspec (~> 2.13)

0 个答案:

没有答案