【发布时间】:2020-08-15 15:12:40
【问题描述】:
我正在写这样的 rspec 测试
describe Module do
describe "method" do
context "first_context" do
before do
stub_const("Module::CONST", "stub0")
end
# logic
end
context "second_context" do
before do
stub_const("Module::CONST", "stub0 stub1")
end
# logic
end
end
end
大约 75% 的时间测试通过,因为 stub_const 逻辑正在工作,但有 25% 的时间竞争条件失败并且来自第一个测试的 stub_const 流入第二个测试的 const,所以第二个测试的Module::CONST 值为"stub0"。为什么会这样?
【问题讨论】:
-
你怎么知道这是一个竞争条件?您是否并行运行测试?你的问题没有足够的信息。我复制了你的测试,运行了 100 次,没有一次失败。
标签: ruby-on-rails ruby rspec