【问题标题】:Running two tests simultaneously in RSpec / Rack::Test / Sinatra在 RSpec / Rack::Test / Sinatra 中同时运行两个测试
【发布时间】:2015-02-10 20:54:30
【问题描述】:

给定示例 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 的结果完成? A.K.A,RSpec 中是否可以进行异步测试?

【问题讨论】:

  • 给定的应用程序没有多大意义,因为实例变量不会在请求之间持续存在。但无论如何,您的问题的答案是“使用线程”。

标签: ruby rspec sinatra rack rack-test


【解决方案1】:

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

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

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

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

请参阅此博客详细说明:

【讨论】:

    猜你喜欢
    • 2015-12-12
    • 2012-02-19
    • 1970-01-01
    • 2014-02-06
    • 2013-09-01
    • 2011-11-09
    • 2015-03-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多