web-dev-qa-db-ja.com

テストブロック出力内にコンソールログを出力できます

したがって、console.logtest内に配置すると、テスト後にconsole.logが表示されます。

  authentication.spec.js
    register
      ✓ should be able to insert (128ms)
      ✓ should fail because of duplicate (100ms)
      ✓ should have user id assigned (1ms)
    login
      ✓ should be able to login for correct user (117ms)
      ✓ should fail for incorrect user (14ms)

  console.log tests/unit/authentication.spec.js:110
    we can see a message

代わりに私が見たいのは次のようなものです:

  authentication.spec.js
    register
      ✓ should be able to insert (128ms)
      ✓ should fail because of duplicate (100ms)
      ✓ should have user id assigned (1ms)
    login
      ✓ should be able to login for correct user (117ms)
        console.log tests/unit/authentication.spec.js:110
           we can see a message
      ✓ should fail for incorrect user (14ms)

この場合、console.log✓ should be able to login for correct userとともに表示されるはずです。

Mochaを使用していたとき、mocha-loggerを使用していました

11
A. Lau

私が知る限り、これは簡単には不可能ですが、さらに情報を探すためのいくつかの場所があります(すぐに使用できます):

Jestでは、カスタムレポーターを使用できます。 https://jestjs.io/docs/en/configuration.html#reporters-array-modulename-modulename-options なので、独自のレポーターを作成して出力を表示できます異なって。現時点では、個別のテストの更新は取得せず、テストスーツだけを取得しますが、ダンアブラモフが作成した問題は次のとおりです。 https://github.com/facebook/jest/issues/6616 .

上記のgithubスレッドから-現時点のレポーターインターフェイスは次のようになります。

export default class BaseReporter {
  onRunStart(results: AggregatedResult, options: ReporterOnStartOptions) {}

  // these are actually for the test suite, not individual test results
  onTestStart(test: Test) {}
  onTestResult(test: Test, testResult: TestResult, results: AggregatedResult) {}

  onRunComplete(contexts: Set<Context>, results: AggregatedResult ): ?Promise<void> {}
}

TestからtestResultオブジェクトにパラメーターを渡す事前定義された方法は見つかりませんでした。そのため、テスト名に基づいた情報のロギングにほとんど制限されます。以下は、testResultオブジェクト内のtestResultプロパティの例です。

testResults:
  [ { ancestorTitles: [Array],
       duration: 5,
       failureMessages: [],
       fullName: 'add should add two numbers',
       location: null,
       numPassingAsserts: 0,
       status: 'passed',
       title: 'should add two numbers' } ],

ご覧のとおり、これは標準的なレポーターが使用するすべての情報です:テスト名、期間、ステータス。参考のために、デフォルトのレポーターはこちらです。 https://github.com/facebook/jest/blob/7b7fd01350/packages/jest-cli/src/reporters/default_reporter.js

8
Georgy

はい、ログに記録できます。 package.jsonに--verbose falseを追加する必要があるかもしれません"test";

例:"scripts": { "test": "jest --watch --verbose false" }

jestのバグについては、githubの詳細をご覧ください

3
nircraft