単体テストの実行時に、node.jsアプリケーションからのアプリケーションログメッセージを抑制する方法は?

アンディミエ:

node.jsアプリケーション(基本的にRESTバックエンド)をモカとスーパーテストを使用してユニットテストしている間、画面に表示されるテスト固有のメッセージだけが必要ですが、stdoutにはアプリケーションログメッセージが散らかっています。

単体テストを開始します:

mocha -R spec .

...そして、この出力を取得します(これは本来あるべきはないものです):

[App] Listening on port 3000 ...
[App] Starting app, hooray!

  Project API
    GET /projects
[App] entering "projects" module ...
      √ should return an array of projects (317ms)

アプリケーションログメッセージに[App]のマークを付けました。私が本当に欲しいのはユニットテストからのこの出力です

  Project API
    GET /projects
      √ should return an array of projects (317ms)

Mochaのレポーター出力が点在するアプリケーションによるconsole.log / warn / error出力を抑制するにはどうすればよいですか?

解決:

dankohnのアプローチに従って、私はこのようになりました(これは私の問題を解決します(ロギングにwinston使用しています):

(ノードの「メイン」サーバーファイル、server.js :)

if (process.env.NODE_ENV !== 'test') {
    logger = new (winston.Logger)({
        transports: [
            new (winston.transports.Console)(),
            new (winston.transports.File)({ filename: 'foo.log' })
        ]
    });
} else {
    // while testing, log only to file, leaving stdout free for unit test status messages
    logger = new (winston.Logger)({
        transports: [
            new (winston.transports.File)({ filename: 'foo.log' })
        ]
    });
}

... env変数を設定するには、各ユニットテストファイルを次のように開始します。

process.env.NODE_ENV = 'test';
ダンコーン:

app.jsで:

if (process.env.NODE_ENV !== 'test') {
  app.use(express.logger());
}

各モカファイルの上部:

process.env.NODE_ENV = 'test';

更新:

この関数をインポートコードで使用します。

function logExceptOnTest(string) {
  if (process.env.NODE_ENV !== 'test') {
    console.log(string);
  }
}

次に、あなたのすべてを置き換えるconsole.log('it worked')logExceptOnTest('it worked')基本的なトリックは、必要なロギングのレベルに関するグローバルフラグとして環境変数を使用することです。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

JFrameアプリケーションからアプレットプログラムを実行する方法は?

分類Dev

実行時にアプリケーションにヒットするAPI呼び出しを単体テストするための最良の方法

分類Dev

同じ端末内のあるアプリケーションから別のアプリケーションにメッセージを送信する

分類Dev

実行時にクライアントアプリケーションでのWCFメッセージのログ記録をブロックする

分類Dev

ForegroundアプリケーションでFirebaseCloudメッセージングを実装する方法は?

分類Dev

アプリケーションのクローズを遅らせ、メッセージを送信する

分類Dev

別のアプリケーションのプリビルドプロセスからcmdアプリケーションを呼び出す方法は?

分類Dev

32ビットアプリケーションから64ビットアプリケーションのプロセス情報を取得する

分類Dev

Androidメッセンジャーアプリケーションからのメッセージのみを送信する方法

分類Dev

両方のアプリが組み込みのactivemqを使用している場合に、あるSpring-Bootアプリケーションから別のアプリケーションにJmsメッセージを送信する方法

分類Dev

Springを使用してアプリケーションオプションを保存するグローバルセッション/アプリケーションセッションを作成するにはどうすればよいですか?

分類Dev

Delphiコンソールアプリケーション:メッセージダイアログにOnHelpを追加する方法は?

分類Dev

アプリケーションログをbluemixからlogentriesに排出する方法

分類Dev

リングアプリケーションでルートのサブセットを認証する方法は?

分類Dev

メッセージを表示するSpringBootアプリケーションロケール 'en_GB'のメッセージが見つかりません

分類Dev

別のAndroidアプリケーションからプログラムでアプリケーションのデータをクリアする

分類Dev

スプリングブートアプリケーション内にReactWebアプリケーションをjarパッケージと統合する方法

分類Dev

アプリケーションでRabbitMQコンソールのリスニングメッセージをフィルタリングする方法

分類Dev

シングルページAngularJSアプリケーションの基本的なSpringセキュリティ(セッション管理)を実装する方法

分類Dev

Electronアプリケーションのロジックを外部から呼び出す方法は?

分類Dev

IoT Hubメッセージペイロード-アプリケーションのプロパティと本文を定義する方法は?

分類Dev

Elixir CLIアプリケーションをパッケージ化する最良の方法は何ですか?

分類Dev

外部アプリケーションから組み込みHornetQにメッセージを送信する

分類Dev

単体テストでは、アプリケーションサーバーで実行していない場合にデータソースをどのようにセットアップする必要がありますか?

分類Dev

JavaEEアプリケーションからJavaSEアプリケーションにJMSメッセージを送信します

分類Dev

公開されたすべてのメッセージを別のアプリケーションから仮想ホストに記録する方法

分類Dev

SpringBootアプリケーションタスクのスケジューリングを管理する方法は?

分類Dev

SpringCloudストリーム-アプリケーションの初期化後にメッセージを送信する

分類Dev

バックエンドサーバープロセスからアプリケーションをウェイクアップする方法は?

Related 関連記事

  1. 1

    JFrameアプリケーションからアプレットプログラムを実行する方法は?

  2. 2

    実行時にアプリケーションにヒットするAPI呼び出しを単体テストするための最良の方法

  3. 3

    同じ端末内のあるアプリケーションから別のアプリケーションにメッセージを送信する

  4. 4

    実行時にクライアントアプリケーションでのWCFメッセージのログ記録をブロックする

  5. 5

    ForegroundアプリケーションでFirebaseCloudメッセージングを実装する方法は?

  6. 6

    アプリケーションのクローズを遅らせ、メッセージを送信する

  7. 7

    別のアプリケーションのプリビルドプロセスからcmdアプリケーションを呼び出す方法は?

  8. 8

    32ビットアプリケーションから64ビットアプリケーションのプロセス情報を取得する

  9. 9

    Androidメッセンジャーアプリケーションからのメッセージのみを送信する方法

  10. 10

    両方のアプリが組み込みのactivemqを使用している場合に、あるSpring-Bootアプリケーションから別のアプリケーションにJmsメッセージを送信する方法

  11. 11

    Springを使用してアプリケーションオプションを保存するグローバルセッション/アプリケーションセッションを作成するにはどうすればよいですか?

  12. 12

    Delphiコンソールアプリケーション:メッセージダイアログにOnHelpを追加する方法は?

  13. 13

    アプリケーションログをbluemixからlogentriesに排出する方法

  14. 14

    リングアプリケーションでルートのサブセットを認証する方法は?

  15. 15

    メッセージを表示するSpringBootアプリケーションロケール 'en_GB'のメッセージが見つかりません

  16. 16

    別のAndroidアプリケーションからプログラムでアプリケーションのデータをクリアする

  17. 17

    スプリングブートアプリケーション内にReactWebアプリケーションをjarパッケージと統合する方法

  18. 18

    アプリケーションでRabbitMQコンソールのリスニングメッセージをフィルタリングする方法

  19. 19

    シングルページAngularJSアプリケーションの基本的なSpringセキュリティ(セッション管理)を実装する方法

  20. 20

    Electronアプリケーションのロジックを外部から呼び出す方法は?

  21. 21

    IoT Hubメッセージペイロード-アプリケーションのプロパティと本文を定義する方法は?

  22. 22

    Elixir CLIアプリケーションをパッケージ化する最良の方法は何ですか?

  23. 23

    外部アプリケーションから組み込みHornetQにメッセージを送信する

  24. 24

    単体テストでは、アプリケーションサーバーで実行していない場合にデータソースをどのようにセットアップする必要がありますか?

  25. 25

    JavaEEアプリケーションからJavaSEアプリケーションにJMSメッセージを送信します

  26. 26

    公開されたすべてのメッセージを別のアプリケーションから仮想ホストに記録する方法

  27. 27

    SpringBootアプリケーションタスクのスケジューリングを管理する方法は?

  28. 28

    SpringCloudストリーム-アプリケーションの初期化後にメッセージを送信する

  29. 29

    バックエンドサーバープロセスからアプリケーションをウェイクアップする方法は?

ホットタグ

アーカイブ