0

给定示例 sinatra 应用程序

post '/1' do
  sleep(1) until @2
  0
end

post '/2' do
  @2 = true
  0
end

和示例 RSpec 测试

describe 'test' do

  it 'does /1' do
    post '/1'
    expect(last_response.body) to eq?(0)
  end

  it 'does /2'
    post '/2'
    expect(last_response.body) to eq?(0)
  end

end

第一个测试 ( it does /1) 将挂起,等待 /2 被调用。

是否可以告诉 RSpec 在开始测试 #2 之前不要等待测试 #1 的结果完成?AKA,在 RSpec 中可以进行异步测试吗?

4

1 回答 1

1

是的。一种简单的方法是使用并行测试 gem:

适用于 CI 服务器的类似 gem:

这些宝石都是关于跨 CPU 传播测试的。你的代码更适合并发测试。

如果您愿意使用 Minitest(这很棒),那么并发性非常好。“Minitest 使您能够表示您的部分或全部测试用例能够同时运行,正如源注释中所指出的,这只能意味着一件事:您的规则和您的测试很棒。”

请参阅此博客,详细解释它:

于 2015-02-10T23:10:08.873 回答