testing - rspec 模拟外部 api

标签 testing rspec mocking twilio

这里是 TDD 的新手,哦!

这是我要测试的内容(ruby library),简而言之:

 account = Twilio::RestAccount.new(ACCOUNT_SID, ACCOUNT_TOKEN)
    resp = account.request(
        "/#{API_VERSION}/Accounts/#{ACCOUNT_SID}/SMS/Messages",
        'POST',
        smsInfo
    )

下面是测试代码尝试:

describe Text do
  it "should call the Twilio API with credentials" do
    #pending "mocking api although not passed in.."
    t = mock(Twilio::RestAccount)
    twapi = mock("new twapi").should_receive(:request).and_return(Net::HTTPSuccess)
    t.stub(:new).and_return(twapi)

    Twilio::RestAccount.should_receive(:new)

    sms = Factory.create(:boring_sms)
    sms.send_sms
  end
end

产生错误:undefined method `request' for nil:NilClass

我采取的方法是否正确?谢谢!

最佳答案

有了 Twilio 和其他外部服务,我也考虑使用 VCR。 http://relishapp.com/myronmarston/vcr

好处是您可以通过手动测试让它工作一次,它基本上可以验证您没有搞砸任何事情。不利之处在于,无论何时您接触 VCR 测试的代码,您通常都必须手动重新测试 VCR 测试过的所有内容。还有其他需要考虑的事情。

关于testing - rspec 模拟外部 api,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6726024/

相关文章:

php - 为扩展另一个类的类编写 PHPUnit 测试会产生 'Class not found' 错误

grails - Grails 插件服务与 GORM 的集成测试应该有效吗?

java - Mockito:使用 "thenReturn"中的方法返回模拟不起作用

ruby-on-rails - 如何以最小的数据库开销在 Rails 中测试关联扩展逻辑

ruby-on-rails - 使用 Rails 和 Rspec,如何测试数据库未被方法触及

c# - 如何模拟 IO/网络类?

python - 编译AggregatorV2V3Interface导致TypeError : Interfaces cannot inherit.接口(interface)

java - 如何根据枚举列表值运行每个浏览器驱动程序?

c# - SendKeys 到 Windows 文件对话框

ruby-on-rails - 如何覆盖 Rails 中的 View