问题标签 [vcr]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
ruby - VCRProxy:在 Capybara 内使用 VCR 记录 PhantomJS ajax 调用
我已经在这个领域做了一些研究,但没有找到任何解决方案。我有一个站点,其中对 facebook 进行异步 ajax 调用(使用 JSONP)。我正在使用 VCR 在 Ruby 端记录我的所有 HTTP 请求,所以我认为将这个功能也用于 AJAX 调用会很酷。
所以我玩了一下,想出了一个代理尝试。我使用 PhantomJS 作为无头浏览器和 poltergeist 用于 Capybara 内部的集成。Poltergeist 现在配置为使用这样的代理:
出于测试目的,我编写了一个基于 WEBrick 的代理服务器,它集成了 VCR:
这适用于每个 localhost 调用,并且它们得到了很好的记录。HTML、JS 和 CSS 文件由 VCR 录制。然后我启用了该c.ignore_localhost = true
选项,因为(在我看来)记录本地主机调用没有用。
然后我再次尝试,但我必须弄清楚,在页面上进行的 AJAX 调用没有被记录。更糟糕的是,它们不再在测试中工作。
所以说到重点,我的问题是:为什么所有对本地主机上的 JS 文件的调用都被记录了,而 JSONP 对外部资源的调用却没有?它不可能是 jsonP 的东西,因为它是一个“正常”的 ajax 请求。或者 phantomjs 内部是否存在错误,即 AJAX 调用没有被代理?如果是这样,我们该如何解决?
如果它正在运行,我想在里面集成启动和停止程序
- - - - 更新 - - - -
我做了一些研究,得出了以下几点:代理在HTTPS调用和通过HTTPS调用的二进制数据方面存在一些问题。
我启动了服务器,并进行了一些 curl 调用:
该呼叫将按应有的方式记录下来。代理的请求和响应输出是
但是这个调用没有被记录,肯定是 HTTPS 有问题:
头文件输出为:
所以,我想也许代理不能处理 HTTPS,但它可以(只要我在 cURL 调用后得到控制台上的输出)。然后我想,也许 VCR 不能模拟 HTTPS 请求。但是使用这个脚本,当我不在代理中使用它时,VCR 会模拟 HTTPS 请求:
那么问题是什么?VCR 处理 HTTPS,代理处理 HTTPS。为什么他们不一起玩?
ruby - 如何在主机分割的不同磁带中录制/播放?
在我正在进行的项目中,我们使用 VCR 来存储本地和外部服务的磁带。本地的是不断修改的微服务,而外部的几乎没有修改。
由于这个原因,再加上外部服务需要很长时间才能重新录制,这对我们大部分时间只重新录制本地磁带是有意义的。
为了解决这个问题,我们尝试在不同的文件夹(cassettes/localhost 和cassettes/external/sample.com)中分离磁带。
然后我们想出了:
但问题是我们有一些测试需要重复请求(完全相同的请求),服务器返回不同的结果。因此,使用上面的代码可以为每个 http 调用重置磁带。第一个请求被记录下来,第二个是第一个请求的回放,即使预期的响应会有所不同。
然后我们尝试了一种使用标签和嵌套磁带的不同方法:
但这也行不通。结果是所有 localhost 请求都记录在内部磁带上。VCR 忽略了其余的请求。
那么你有什么建议来解决这个问题吗?
ruby-on-rails - 如何自动定期运行我的规范并在它们失败时得到通知?
我写了一个食谱屏幕刮板。由于屏幕抓取工具很容易破解,我编写了一些规范来测试各种网站的预期输出。在我的开发环境中,我使用的是VCR,所以我不必一直打电话到这些网站。
问题是这并不能真正告诉我食谱网站是否改变并破坏了我的刮刀。我可以定期刷新磁带,我会这样做,但我想更加积极主动。我想以某种方式每天运行这些特定的规范,并在它们失败时收到结果通知,这样我就可以回去修复刮板。
ruby - 录像机不录制磁带
我有一个非常简单的module
我正在使用 VCR gem 使用 Ruby 进行测试。
我已经根据文档配置了 VCR,但似乎无法在磁带目录中录制磁带。为了以防万一,我什至将盒式磁带目录的权限更改为 777。真正奇怪的是,我已经完全删除了盒式磁带目录,运行规范,然后创建了一个新的盒式磁带目录。
我正在使用Typhoeus
0.4.2 和Hydra
. 我目前无法升级 Typhoeus。
相关代码:
我不知道为什么不写磁带。
ruby-on-rails-3.2 - 如何使用 rspec 测试不良的网络连接
我想测试与外部 api 的连接错误。最好的方法是什么?
在我的控制器中,我有
我想测试错误是否显示给用户。
c# - NUnit 的 VCR 等效项
我们使用 C# 和 .net 编写了一个基本的网络应用程序。对于测试,我们喜欢使用类似于Ruby 的 VCR 的东西。C#/.net 是否存在这样的事情?
ruby-on-rails - 应用程序在开发环境中运行时未初始化的常量 VCR
我正在使用 VCR 来加快我在 rails 应用程序中的测试,它在测试环境中就像一个魅力
但是,当我在开发环境中实际浏览该站点时,当我到达
我可以通过在我的 config/application.rb 中要求 VCR 来解决这个问题
但这感觉不是正确的解决方案......
这不会强制应用程序在我所有的 RAILS_ENV 中使用磁带吗?
我只想在我的测试环境中使用我的 VCR 磁带,而不是在我的应用程序运行的任何其他环境中。
什么是最好的解决方案?
ruby-on-rails - 编写 Rails 集成测试/规范时如何存根外部 JavaScript 库?
我的应用程序与谷歌地图接口进行地理编码和条纹支付。使用VCR,我模拟了对这些服务的所有请求,效果很好。但是两者的库仍在javascript_include_tag
s 中加载。处理这个问题的最佳方法是什么,以便集成测试可以完全脱离互联网运行?
ruby - Ruby TestUnit、VCR 和 HTTP API 请求
我正在构建一个 API 包装器并为它编写一些测试,我有几个问题。
1)我如何assert
为不存在数据的调用编写一个?例如,使用 API 通过 id 查找成员,但该用户尚不存在。
2)我如何编写assert
测试PUT
和DELETE
请求?
我已经掌握了测试GET
和POST
请求,只是不确定其他 2 个动词。
ruby-on-rails - vcr 不知道如何处理这个请求
嗨,我正在尝试使用带有标签的 vcr 用黄瓜测试谷歌身份验证。
一切都很好,直到令牌过期。我认为当它到期时会发生这种情况
但我有一个包含此内容的文件
如果我允许 vcr 录制新请求,则此磁带的内容会更改。我不明白为什么,如果方法和 uri 没有将 POST 更改为https://accounts.google.com/o/oauth2/token。
我更改了标签以录制新剧集,现在测试通过了……我一无所知。
我再次运行测试,现在当 POST 到令牌 url 完成时我有了这个: