Rspec 异步行为的断言
在GOOS[1]中,他们使用了一个名为assertEventually的断言,该断言对 系统将处于成功状态,直到某个超时时间过去。这 允许您使用异步代码同步测试 在Ruby/RSpec世界中,我们已经有了与之相当的功能了吗?我 我知道水豚要等到{},但那是相当初级的——水豚 失败消息没有多大帮助。还有别的东西吗 在那里 [1] 当然可以。“等待”是Brian Takita和我最初为之编写的一种方法 用于硒测试,然后IIRC将其制成硒宝石 现在很多图书馆都使用它(或者他们自己的版本——我没有专利) 投票时的索赔:-))。我记得的等待让你 自定义失败消息。让我去看看是在GitHub还是 任何事 啊,这里有一个:Rspec 异步行为的断言,rspec,Rspec,在GOOS[1]中,他们使用了一个名为assertEventually的断言,该断言对 系统将处于成功状态,直到某个超时时间过去。这 允许您使用异步代码同步测试 在Ruby/RSpec世界中,我们已经有了与之相当的功能了吗?我 我知道水豚要等到{},但那是相当初级的——水豚 失败消息没有多大帮助。还有别的东西吗 在那里 [1] 当然可以。“等待”是Brian Takita和我最初为之编写的一种方法 用于硒测试,然后IIRC将其制成硒宝石 现在很多图书馆都使用它(或者他们自己的版本——我没有专利)
将此函数添加到代码中
def wait_for
timeout = 3
start = Time.now
x = yield
until x
if Time.now - start > timeout
raise "Wait to long here. Timeout #{timeout} sec"
end
sleep(0.1)
x = yield
end
end
然后在每次需要等待异步操作时使用:
client.check_mail
wait_for do
!client.envelope.nil?
end
expect(client.envelope.message['sender']).to eq 'Subzero'
在示例中,通过异步调用填充数据的信封