如何在单个线程中运行单个规范?

时间:2011-07-24 13:22:17

标签: multithreading rspec

我的规格:

it "has empty thread" do
  Thread.current[:foo].should be_nil
  Thread.current[:foo] = "bar"
end

it "has empty thread" do
  Thread.current[:foo].should be_nil
end

第二个规范失败,因为先前的规范改变了线程。 如何在不同的线程中运行规范,或者在每个规范或其他内容之前将线程的密钥“无效”以传递第二个规范?

1 个答案:

答案 0 :(得分:1)

您可以在规范中创建Thread;不要忘记join它从重新评估的线程中获取should的结果:

it "has empty thread" do
    Thread.new {
        Thread.current[:foo].should be_nil
        Thread.current[:foo] = "bar"
    }.join
end

it "has empty thread" do
    Thread.new {
        Thread.current[:foo].should be_nil
    }.join
end