5

我正在开发一个 RESTful Node.js API (express+mongoose) 这个 API 调用第三方 Oauth API (google, facebook, 不管)。

到目前为止,我一直很高兴使用 mocha+chai+request 设置自动化测试,但是我在模拟第三方 API 来测试调用它的(我的 API 的)路由时遇到了麻烦。我试过使用 nock,但它不适用于我的用例。

为了运行我的测试,我启动了我的 API ( npm start),然后在另一个选项卡中启动了测试套件 ( npm test)。测试套件使用请求通过 HTTP 测试 API。因此,我认为 nock 在这里不起作用,因为它在“测试套件”过程中而不是在“API”过程中模拟 http。

我绝对需要模拟这个第三方调用,原因有两个: 1. 我希望能够离线运行我的测试套件,所有东西都在我的笔记本电脑上运行 2. 由于第三方 API 使用 Oauth,测试套件中的硬编码凭据(即使是测试帐户)似乎也不太容易。

我真的很想不要在我的测试覆盖中留下这个巨大的漏洞,所以任何建议都会非常感激!

4

1 回答 1

3

所以这就是我解决自己问题的方法。我在第一次为应用程序设置适当的测试时自己想出了它,所以请随时提出改进建议。免责声明:我使用咖啡脚本

第一步是从另一个文件 starter.coffee 启动我的应用程序,该文件基本上如下所示:

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

所以要启动我的服务器进行测试,而不是做coffee app.coffee,我会做coffee starter.coffee

在从文件启动应用程序之前,该google_mock.coffee文件会模拟 Google API app.coffee。为此,我使用了诺克!包裹。

google_mock.coffee文件如下所示:

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

有更多用于模拟其他 Google api 调用的行。

于 2014-06-11T09:28:50.367 回答