测试不在Rails中发出HTTP请求

时间:2013-03-18 15:12:22

标签: ruby-on-rails rspec fakeweb

测试HTTP请求是否最简单的方法是什么?

说,如果用户没有提供用户名,我希望我的应用程序不要向远程服务器发送API调用。

我应该在Rails应用程序中编写什么RSpec测试来测试从未发出HTTP请求? fakeweb可以以某种方式帮助我吗?

3 个答案:

答案 0 :(得分:2)

您应该尝试WebMock 它允许您检查请求某个URL的次数。

assert_requested :post, "http://www.example.com", :times => 0

答案 1 :(得分:1)

假设我们有以下代码向GitHub的API发出条件请求。

if condition
  user = Octokit.user 'dideler'
end

使用RSpec,您可以测试对象是否没有收到方法调用的消息。

expect(Octokit).to_not receive(:user)

如果通过,则表示请求尚未完成。

答案 2 :(得分:0)

我想我明白你在问什么。您只想错误检查以查看请求是否已发送或有效。

如果用户名!=空白 - > api调用else返回'你没有输入用户名'。

或者您可以使用api的返回数据来检查请求是否有效。

我希望这会有所帮助。