ran*_*its 6 ruby testing ruby-on-rails mocha.js testunit
我现在将第三方Web服务称为我的应用程序的一部分.我正在使用RestClient gem来执行此操作.有很多工具可以做同样的事情,所以这无关紧要.
我很好奇的是有足够好的测试,没什么太花哨的,我可以模拟我的应用程序在第三方Web服务因任何原因不可用时的响应方式.无论是由于网络延迟/复杂性,我都超过了速率限制或超时,我只是希望能够采取类似HTTP状态代码的内容并测试我的应用程序在该事件中执行的操作.
使用Test :: Unit的最佳方法是什么?现在,对第三方服务的调用封装在我的一个控制器内.我有一个简单的模块,其中包含一些用于远程服务的不同端点的包装器方法.我只想确保我的应用程序在服务可用或不可用时做正确的事情.
在Test :: Unit旁边使用一个额外的框架,它可以"存根"正确的方式去做这个吗?显然我不能强制网络超时并开始破解像IPtables这样的东西,因为测试不值得花时间.我确信这个问题已经解决了一百万次,因为将Facebook和Twitter等内容集成到Web应用程序中如今非常受欢迎.当以强大/受控格式访问这些API时,如何测试失败?
我建议使用像webmock这样的东西来模拟所有的http请求(不仅仅是模拟失败的请求); 它会大大加快您的测试套件,而不是每次运行测试时都必须实际触及第三方服务.
Webmock支持Rest Client和Test :: Unit.只需将此代码放入您的test/test_helper.rb
文件中:
require 'webmock/test_unit'
Run Code Online (Sandbox Code Playgroud)
例如,要测试网络超时:
stub_request(:any, 'www.example.net').to_timeout
RestClient.post('www.example.net', 'abc') # ===> RestClient::RequestTimeout
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2110 次 |
最近记录: |