Avoiding multiple API Calls in Rspec tests

时间:2015-10-30 23:45:20

标签: ruby-on-rails rspec

I am trying to test a "scan" method that I have. Within this scan method, I make an API call (among other things). How can I test this method without triggering unneeded API calls?

2 个答案:

答案 0 :(得分:2)

一种方法是简单地调用API:

allow(thing).to receive(:action).and_return(response)

另一种方法是允许API调用通过,但拦截它并使用VCR返回模拟响应。要做到这一点,你要记录"请求和"回放"。

当您需要处理测试对象中的整个响应时,VCR很方便。只需针对真实API进行一次测试,然后后续测试就可以使用VCR"盒式磁带"。 OTOH这比简单地存根调用要慢,特别是如果你只需要模拟状态而不是整个响应。

TL:如果可以的话,DR,存根,但是当它为您节省工作时不要犹豫使用VCR。

答案 1 :(得分:0)

您不应该在测试环境中进行API调用。为了阻止这些来电,您应该stub方法,以便在被调用时返回truesuccess