从rspec 2升级到3.当我单独运行测试(rspec spec/models/foo_bar_spec.rb
)时,它会通过。但是当我运行rspec spec/models
时,此测试失败了:
1) FooBar does something
Failure/Error: allow_any_instance_of(FooBar).to receive(:some_class_method)
FooBar does not implement #some_class_method
# ./spec/models/foo_bar_spec.rb:15:in `block (2 levels) in <top (required)>'
表示规范的违规行是:
before(:each) do
allow_any_instance_of(FooBar).to receive(:some_class_method)
end
然后我运行rspec spec/models --format documentation --fail-fast
以查看之前正在运行的测试;即使我将它们全部注释掉,以便foo_bar_spec是第一个运行的测试,它仍然以同样的方式失败。
--format documentation
向我证明FooBar规范是先运行的。单独运行它证明语法是正确的。在rspec 3中是否有一些隐藏的陷阱我不见了?我已经在相关问题中建议使用transactional_fixtures。