如何在Rails 5.1系统测试中使用VCR?

时间:2017-05-23 00:44:09

标签: ruby-on-rails capybara vcr system-testing

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

我有三个问题。

  1. 这对我来说没什么意义,因为测试驱动程序和应用程序代码不共享内存。
  2. 我没有找到关于如何设置它的完整食谱。
  3. 我发现人们如何设置它的点点滴滴,但它不在rails 5.1的背景下,后者在幕后设置了水豚。
  4. 如何配置Rails 5.1应用程序,Capybara和VCR一起进行系统测试?

    (我的无头浏览器是phantomjs,由恶作剧者驱动。但是我不需要拦截来自浏览器的请求,只需要服务器端请求。如果我需要从浏览器拦截我可能会使用完整的http代理服务器,就像puffing-billy。)

1 个答案:

答案 0 :(得分:0)

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

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

  2. 除了自己的README已经提供的内容之外,没有什么特别需要配置WebMock或VCR

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

  4. 总而言之,这里有几点需要注意。首先,WebMock / VCR只能处理您的应用程序发出的请求(而不是来自您声明不需要的浏览器),并且在端到端时使用伪造服务(如果可能)而不是WebMock / VCR通常更好系统测试,因为对被测代码的干扰较少。

    如果这不能解决您的问题,请针对您遇到的特定问题发布问题,导致问题的代码以及您收到的错误。