Node.js:如何testing我的API,嘲笑我的API调用的第三方API

我正在开发一个RESTful Node.js API(express + mongoose)这个API调用第三方Oauth API(谷歌,脸谱,不pipe)。

我一直很高兴使用mocha + chai +请求设置自动化testing,但是我无法模拟第三方API来testing调用它的路由(我的API)。 我已经尝试过使用nock,但是它不适用于我的用例。

为了运行我的testing,我开始我的API( npm start ),并在另一个选项卡中启动testing套件( npm test )。 testing套件使用请求通过HTTPtestingAPI。 因此我认为nock在这里不起作用,因为它在'testing套件'过程中嘲弄http,而不是在'API'过程中。

我绝对需要嘲笑这个第三方调用,原因有两个:1.我希望能够在我的笔记本电脑上运行我所有的testing套件。2.由于第三方API使用Oauth,testing套件中的硬编码证书即使是一个testing帐户)似乎并不太容易。

我真的很喜欢不要在我的testing报道中留下这个巨大的漏洞,所以任何build议都会大大降低!

所以这就是我如何解决自己的问题。 当我第一次对应用程序进行适当的testing时,我自己提出了这个build议,所以可以自由地提出改进build议。 免责声明:我使用咖啡脚本

第一步是从另一个文件启动我的应用程序,starter.coffee,基本上看起来像这样:

 # This file starts the API locally require './test/mocks/google_mock' require './app' 

所以要开始我的服务器testing,而不是做coffee app.coffee ,我会做coffee starter.coffee

在从app.coffee文件启动应用程序之前, google_mock.coffee文件嘲笑Google API。 为此,我使用诺克 ! 包。

google_mock.coffee文件如下所示:

 nock = require 'nock' # mocking up google api googleapis = nock('https://www.googleapis.com') .get('/userinfo/v2/me') .reply(401) 

有更多的线路嘲笑其他Google API的调用。