如何将 VCR 用于 Rails 5.1 系统测试?

How can I use VCR with Rails 5.1 system tests?

网络上的许多内容似乎都表明 VCR 可以与 Capybara 一起使用。

我有三个问题。

  1. 这对我来说意义不大,因为测试驱动程序和应用程序代码不共享内存。
  2. 我没有找到关于如何设置它的完整方法。
  3. 我正在寻找人们如何设置它的点点滴滴,但它不在 rails 5.1 的上下文中,它在幕后进行水豚设置。

如何配置 Rails 5.1 应用程序、Capybara 和 VCR 以协同工作以进行系统测试?

(我的headless浏览器是phantomjs,由poltergeist驱动。但是我不需要拦截来自浏览器的请求,只需要拦截服务器端的请求。如果我需要从浏览器拦截我可能会使用一个完整的http代理服务器,像蓬松比利。)

我假设你的意思是 Rails 5.1,因为 Rails 5 没有系统测试。

  1. 用于测试的应用程序 Capybara 运行s 的副本 运行 在单独的线程中,而不是单独的进程中。这意味着他们确实可以访问相同的内存,并加载 类

  2. 配置 WebMock 或 VCR 除了他们的 README 已经提供的内容外,没有什么特别的要求

  3. Capybara的设置以及Rails如何处理它与WebMock或VCR的配置无关。此外,即使在使用 Rails 5.1 系统测试时,所有正常的 Capybara 配置选项仍然可用。

综上所述,这里有几件事需要注意。首先,WebMock/VCR 只能处理您的应用程序发出的请求(而不是来自您声明不需要的浏览器)并且通常最好使用伪造的服务(如果可能)而不是 WebMock/VCR进行端到端系统测试,因为对被测代码的干扰较少。

如果这不能解决您的问题,post 一个关于您遇到的特定问题的问题、导致您问题的代码以及您遇到的错误。