5

RESTful Node.js API (express+mongoose) を開発しています。この API は、サード パーティの Oauth API (google、facebook など) を呼び出します。

これまでのところ、mocha+chai+request を使用した自動テストの設定には非常に満足していますが、サードパーティ API をモックして、それを呼び出す (私の API の) ルートをテストするのに苦労しています。nock を使用してみましたが、私のユース ケースでは機能しません。

テストを実行するには、API を開始し ( npm start)、別のタブでテスト スイートを開始します ( npm test)。テスト スイートは request を使用して、HTTP 経由で API をテストします。したがって、「API」プロセスではなく「テストスイート」プロセスで http をモックしているため、nock はここでは機能しないと思います。

2 つの理由から、このサード パーティの呼び出しを絶対にモックする必要があります。テスト アカウントの場合でも) は簡単ではないようです。

テスト範囲にこの巨大な穴を残したくないので、アドバイスをいただければ幸いです。

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ファイルは、アプリがapp.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 呼び出しをモックするためのより多くの行があります。

于 2014-06-11T09:28:50.367 に答える