这很难解释,我不知道如何解决它。
如果我一次运行所有测试,则每次都失败相同的两个。但是,如果我使用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)