2

いくつかの API ファイルで Redis キャッシュを使用しています。つまり、テストでモックする必要がある依存関係があります。次のファイル構造があるとしましょう

-api 
   - login.js *
   - login.spec.js
   - initiate.js 
   - initiate.spec.js
   - user.js *
   - user.spec.js
- routes.js
- server.js

* を含むファイルにredis-connection依存関係があるとしましょう。これspec.jsを Proxyquire を使用してそれぞれでモックできます。

簡単。

その後、すべてのテストを実行すると問題が発生し、Mocha がサーバーを起動します。これらのファイルはすべて myroutes.jsに取り込まれ、Redis が実行されていないため失敗します。これを回避する方法がいくつかあります。

  1. proxyquire をグローバルにモックする -ドキュメントはこれを好まない。
  2. 私の現在の回避策は、必要な各ファイルでredis-connection、本物または基本的なモック if を条件付きでインポートしますprocess.env.NODE_ENV === 'test'。次に、特定の動作が必要な場合は、このモックを関連するスペック ファイル内のより有用なモックにプロキシ要求します。複雑ですが、機能しているようです。
  3. redis-connectionすべてのスペック ファイルで が出現するたびにモックを作成します。管理するのは恐ろしいですね。Mocha が最初にサーバーを実行するときにも機能しない可能性があります

これを回避する他の方法はありますか?この依存関係を頻繁に使用していないため、当面は回避策が機能する可能性があると思いますが、よりスケーラブルなソリューションを希望します。

ありがとう

4

0 に答える 0