我正在处理的一个项目有集成测试,这些测试实际上会通过网络连接到第 3 方 API……运行这些测试需要很长时间。我建议我们实现类似 VCR 的东西,以便测试与之交互的数据可以被捕获为夹具,并提高这些测试的可靠性和速度。
我目前无法访问代码库,但我相信测试正在做这样的事情:
before do
login_some_user
end
after do
make_web_request_to_clear_items_in_cart
end
it "adds some items to the user's cart" do
make_web_request_to_add_item_to_a_cart
end
所以基本上,前块发出了一个 Web 请求,示例发出了一个完全不同的请求,而后块(我知道这不是理想的使用)发出了第三个请求来清理示例创建的记录。
我在 spec_helper 中设置了一个 around 块,它捕获 Web 请求并以示例命名存储它们。但是,在反复运行测试之后,我发现它们变得非常不稳定,有时通过,有时没有。我尝试将 before 和 after 块包装在单独的 VCR.use_cassette 块调用中,但没有任何区别。
我想知道我是否遗漏了什么,是否有办法处理这样的多个请求或什么?