Jest: console.logは出力を出力したせん

䜜成日 2017幎06月19日  Â·  137コメント  Â·  ゜ヌス: facebook/jest

console.logの出力が芋぀からないずいう問題がある堎合は、Jest24を詊しおください。


問題2441からの分岐

@cpojerこのセットアップmacOSではconsole.logの出力が衚瀺されたせん

$ node --version
v7.4.0

ファむル

package.json 

{
  "dependencies": {
    "@types/jest": "19.2.4",
    "jest": "20.0.4",
    "ts-jest": "20.0.6",
    "typescript": "2.3.4"
  }
}

__tests__/jestconfig.json 

{
  "rootDir": "../",
  "globals": {
    "__TS_CONFIG__": {}

  },
  "moduleFileExtensions": [
    "ts",
    "tsx",
    "js",
    "jsx",
    "json"
  ],
  "transform": {
    "\\.(ts|tsx)$": "<rootDir>/node_modules/ts-jest/preprocessor.js"
  },
  "testRegex": "__tests__/.*test_.*\\.(ts|tsx|js)$"

__tests__/test_foo.ts 

import {} from 'jest';

console.log('CONSOLE before test');
test('fail', () => {
  console.log('CONSOLE inside test');
  expect(true).toEqual(false);
  console.log('CONSOLE end of test');
})

__tests__/test_bar.js 

console.log('BAR CONSOLE before test');
test('fail', () => {
  console.log('BAR CONSOLE inside test');
  expect(true).toEqual(false);
  console.log('BAR CONSOLE end of test');
})

出力

$ jest -c __tests__/jestconfig.json 
 FAIL  __tests__/test_foo.ts
  ● fail

    expect(received).toEqual(expected)

    Expected value to equal:
      false
    Received:
      true

      at Object.<anonymous> (__tests__/test_foo.ts:6:16)
      at Promise.resolve.then.el (node_modules/p-map/index.js:42:16)

 FAIL  __tests__/test_bar.js
  ● fail

    expect(received).toEqual(expected)

    Expected value to equal:
      false
    Received:
      true

      at Object.<anonymous>.test (__tests__/test_bar.js:4:16)
      at Promise.resolve.then.el (node_modules/p-map/index.js:42:16)

Test Suites: 2 failed, 2 total
Tests:       2 failed, 2 total
Snapshots:   0 total
Time:        1.379s
Ran all test suites.

シングルJSテスト

$ jest -c __tests__/jestconfig.json __tests__/test_bar.js 
 FAIL  __tests__/test_bar.js
  ● fail

    expect(received).toEqual(expected)

    Expected value to equal:
      false
    Received:
      true

      at Object.<anonymous>.test (__tests__/test_bar.js:4:16)
      at Promise.resolve.then.el (node_modules/p-map/index.js:42:16)

  ✕ fail (7ms)

Test Suites: 1 failed, 1 total
Tests:       1 failed, 1 total
Snapshots:   0 total
Time:        0.596s, estimated 1s
Ran all test suites matching "__tests__/test_bar.js".

シングルTSテスト

$ jest -c __tests__/jestconfig.json __tests__/test_foo.ts 
 FAIL  __tests__/test_foo.ts
  ● fail

    expect(received).toEqual(expected)

    Expected value to equal:
      false
    Received:
      true

      at Object.<anonymous> (__tests__/test_foo.ts:6:16)
      at Promise.resolve.then.el (node_modules/p-map/index.js:42:16)

  ✕ fail (116ms)

Test Suites: 1 failed, 1 total
Tests:       1 failed, 1 total
Snapshots:   0 total
Time:        1.27s
Ran all test suites matching "__tests__/test_foo.ts".
Confirmed

最も参考になるコメント

2幎間コン゜ヌルログがなかったので、私はより優れた開発者になりたした。 チヌムゞェストに感謝したす

党おのコメント137件

@thymikeeなぜこれが起こっおいるのか、䜕か考えはありたすか

わかりたせんが、typescriptを削陀するなどしお、䟋を最小限に抑えようずしたす。

Typescriptなしで再珟できたす

ノヌド7.4がコン゜ヌルログを食べるこずを確認できたすが、ノヌド7.5.0、7.10.0、8.0.0、および8.1.2で動䜜したす。
ノヌドのバヌゞョンをアップグレヌドしおください。 閉鎖

@thymikee珟圚のLTSリリヌスであるノヌド6はどうですか ただ十分にデバッグしおいたせんが、私もこれにぶ぀かっおいるようです。ただし、珟時点ではLTSリリヌスに制限されおいるため、アップグレヌドできたせん。

v6.11.0でテストしおも、 console.logが衚瀺されたす。

ああ、私は他の問題にぶ぀かっおいるかもしれたせん。 ありがずう、 @ thymikee 、もう少しデバッグに戻りたす。

私は無意識のうちにノヌド7.3.0を実行しおいたしたn経由のバヌゞョンが間違っおいたすが、ログに蚘録されたせんでした。 8.1.1に切り替えお、再床ログに蚘録したした。

@thymikee-それがどのように解決策かわかりたせんか ...ノヌドのバヌゞョンをアップグレヌドできたせん

これがノヌドのバグず芋なされ、少なくずもJest自䜓ずは䜕の関係もないのか、少し混乱しおいるず思いたす。 ノヌドv7.4.0ずJestv19.0.2を䜿甚するず、テストからコン゜ヌルログが衚瀺されたす。 Jestをv20.0.4に曎新するだけで他の構成を倉曎せずに、コン゜ヌルログが衚瀺されなくなりたす。 足りないものはありたすか

@thymikee぀たり、ノヌドバヌゞョンをアップグレヌドしたしたが、ノヌド8.2.1 Winx64 +Jest20.0.4にコン゜ヌルログが衚瀺されたせん。 今のずころフォヌルバックを䜿甚する必芁がありたす

  console.log = s => {
    process.stdout.write(s + "\n");
  };

以前のバヌゞョンにはこの問題がなかったので、Jestで修正する必芁があるず確信しおいたす。

@nowherenone最新のアルファリリヌスjest@testで発生するかどうかをテストできたすか

@thymikeeノヌド8.2.1でjest@testを詊しおみたしたが、同じ結果になりたした。 console.logステヌトメントは垞に飲み蟌たれたす。

@thymikee問題はBufferedConsoleモゞュヌルにあり、コン゜ヌルコンストラクタヌパラメヌタヌが期埅されるパラメヌタヌず䞀臎したせん。

私はPRを開きたした、倚分それは助けになるでしょう https ://github.com/facebook/jest/pull/4157

ここでの問題は、Jestがメッセヌゞをバッファリングするこずですが、ベむルアりトたたは無限ルヌプなどを匕き起こす䜕かがありたす。 メッセヌゞを出力ストリヌムに盎接出力するには、 --verboseを䜿甚する必芁がありたす。

これはばかげおいたす-私は@cpojerからの圹に立たない応答の量私が行くすべおの問題ずPRでず、どういうわけか私たちが十分に賢くないように他のすべおの人にすべおをかけようずしおいるこずによっお匕き起こされたす。

Jestを䜿甚しないでください-疑問に思っおいるなら、それが私の答えです。 新しいテストフレヌムワヌクを芋぀けたす。

describe('index', () => {
  it('doesnt print anything', () => {
    console.log('Hellllooo');
    expect(true).toBe(true);
  });
});
$ yarn test -- src/__tests__/index.spec.js --verbose
yarn test v0.27.5
warning package.json: No license field
$ jest "src/__tests__/index.spec.js" "--verbose"
 PASS  src/__tests__/index.spec.js
  Index
    ✓ doesnt print anything (2ms)

Test Suites: 1 passed, 1 total
Tests:       1 passed, 1 total
Snapshots:   0 total
Time:        0.969s, estimated 2s
$ jest "--version"
v20.0.4
$ node --version
v7.4.0

NodeLmaoの新しいバヌゞョンをむンストヌルするように蚀われるず確信しおいたす-なんお冗談です😂😂😂

@ nf071590は再珟できず、たったく同じJestバヌゞョンずNodeバヌゞョンでrepl.itで動䜜したす https //repl.it/KYLc/0

プロゞェクトのメンテナに぀いお怒鳎る前に、真剣な再珟を考えおください。
也杯

screen shot 2017-08-24 at 17 39 59

これに぀いおどうしたらいいかわからない。 私はあなたの䟋を文字通りファむルに貌り付け、Jestを実行したした。これは、1分前の最新のマスタヌバヌゞョンのJestで、私のMacで宣䌝されおいるずおりに機胜したす。 芋る

screen shot 2017-08-24 at 4 38 11 pm

私がWindowsノヌド8.4、jest 21.0.0-alpha.2を䜿甚しおいるので、 --verboseを䜿甚しない堎合、 console.logは_時々_非衚瀺になりたすが、䞀貫しお衚瀺されるようです。それず。 少し時間があれば、ノヌド7ず安定したjestを䜿甚した結果で曎新できおうれしいです。

ここでも同じ問題がありたす。

describe('index', () => {
  it('doesnt print anything', () => {
    console.log('Hellllooo');
    expect(true).toBe(true);
  });
});
$ node --version
v7.4.0
$ jest "--version"
v21.1.0

screen shot 2017-09-21 at 14 34 32

珟圚、ノヌドv8.7.0npm v5.4.2で同じ問題が発生しおいたす。

これはただ問題です

耇補を提䟛できたすか

FWIW、私はたったく同じ問題を抱えおいたので、ここに行き着きたした。 ノヌドv7.4.0。 Nodeバヌゞョンをアップグレヌドするず、 --verboseがなくおも、 console.logが期埅どおりに出力されたす。 V7.4.0だけがこの問題を抱えおいるバヌゞョンではないかもしれたせんが、バヌゞョンに関連しおいるようで、䞀郚のノヌドバヌゞョンでは問題ではありたせん。 私は今ノヌドv8.3.0を䜿甚しおいたすが、これは機胜しおいるようです。

そうは蚀っおも、アップグレヌドする前は、 @ nf071590ず同じバヌゞョンで、同じ問題がありたした。 repl.itで発生しない理由はわかりたせんが、圌のコンピュヌタヌでのみ発生する奇劙なこずではありたせん。

これはノヌド8.9.0ずjest21.2.1、macOS 10.12.616G1036で再珟できたす

@SimenBできたしたが、この問題はここや他の堎所で死ぬたで議論されおいるようです。 jestのマルチ子プロセスの性質は、 console.logsを䞊曞きし、倉曎されない倧芏暡な曞き換えがないこずを意味したす。 このスレッドに来お、 --verboseフラグを䜿甚するず、 console.logでのデバッグが蚱可されないずいう問題を回避したい堎合は、 --watchフラグを䜿甚する必芁がありたす。 これにより、児童劎働者のプロセスが䞊曞きされるのを防ぎ、コン゜ヌルログで詳现な出力を確認できるようになりたす。 --watchは非垞に高速で、保存時に倉曎されたテストのみを実行するこずで、倉曎されたテストずコヌドに泚意を向けるこずで、より倚くの䟡倀を远加したす。

私の堎合、冗長なメッセヌゞはすべおではありたせんが䞀郚のconsole.logメッセヌゞを消費するこずがわかりたした。 詳现オプションを削陀したしたが、倚少機胜しおいるようです。

ノヌドのバヌゞョンをv6からv9にアップグレヌドしたずころ、テストファむルの1぀が慰めになっおいたす。

私は䜕週間もこの問題ず戊っおきたした。 私はそれが今うたくいくこずをうれしく思いたす

--forceExitず組み合わせるず、問題は--verboseでも解決したせん。その理由は、jestがstderrに曞き蟌むずきに、 console.logがstdout $に出力されるためだず思いたす。 stderrおよび--forceExitの堎合、 stdoutにコンテンツがただフラッシュされおいない可胜性がありたす

console.logが衚瀺されないか、console.logがバッファリングされおラむブで衚瀺されないようにするために、次の解決策 --verboseを必芁ずしないを芋぀けたした。

指図
jest .... --forceExit --setupTestFrameworkScriptFile ./src/tests/jestShim.js

jestShim.jsの内容

const { Console } = require('console');
global.console = new Console(process.stderr, process.stderr);

同じ問題-console.logの出力は衚瀺されたせん。

Node 9.80 Jest 22.4.2 Mac OS 10.13.3

ここで提案された回避策の1぀は私のために働いおいたせんでした。

い぀ものように、私たちがテストするためにプルダりンできる耇補を䜜成しおください。 この問題は発生しおいないため、修正を開始する方法がわかりたせん。

@ledbitの回避策は私のために働いた
NPM 5.3.0
ゞェスト22.4.3

  • マックOS

私はただ耇補が必芁な段階にありたす。

--forceExitはやや壊れおいるようですが、そのフラグを䜿甚しおいないずきは遭遇しおいたせん

[最新のJestv23.0.0、ノヌドv8.11.2を䜿甚するためにフォヌクされたreact-scriptsを䜿甚する]

私は぀いにログを衚瀺するために、それぞれに特定の文字列 @@@などをタグ付けしお実行したした。

yarn test --verbose | grep '@@@'

これはひどいハックですコン゜ヌルの色はすべお倱われたすが、テストの倱敗ず最終的なテストの抂芁は衚瀺されたすが、これたでに機胜したのはそれだけです。 私は䞊蚘のコメントで他のすべおを詊したした。 この゜リュヌションには--verbose匕数が必芁であるこずに泚意しおください react-scripts $を介しお$ --watchず暗黙的に結合されおいたす。

これはただ問題です。 ノヌド10.1.0でjestv22.4.3を䜿甚しおいたすが、アプリの最初のconsole.logステヌトメントのみが衚瀺され、残りはすべお無芖されたす。 ロギングラむブラリをstdoutにストリヌミングするように蚭定するず、いく぀かのログが衚瀺されたすが、正しい順序で衚瀺されたせん。

テストランナヌずしおのJestの仕事は、コヌドのデバッグず修正を支揎するこずです。 これは、ログなしでは実珟できたせん。

@thymikeeこの号を再床開いおください

@thanpolasは、調査できるように、バグを瀺すリポゞトリを䜿甚しお新しい問題を自由に䜜成しおください:)。 たた、最新のJest23をご利甚ください。

私は自分の問題を理解したした。コン゜ヌルにリダむレクトされたずきに、ログがstdoutにストリヌミングされおいるロガヌを介しお発生しおいたした。ストリヌムラむタヌのコヌルバックを呌び出すのを忘れたため、ストリヌムがログの送信を停止したした。

その䟡倀に぀いおは、TerminalずiTerm2の違いを芋おきたした。

stdoutずコン゜ヌルで魔法を䜿わないようにjestに指瀺するオプションは、すべおの人にずっお非垞に有益だず思いたす

これが私がなんずか再珟したバグの䞀䟋です。 ただし、耇数の゜ヌスがあるかどうかはわかりたせん。

https://github.com/spion/jest-logging-repro

yarn install; yarn repro

セットアップJestは監芖モヌドで、冗長フラグがオンになっおいお、少なくずも2぀のテストファむルが実行されおいたす。

理論ワヌカヌの1぀からの出力により、コン゜ヌルカヌ゜ルが間違った堎所に移動し、間違ったコンテンツが䞊曞きされたす。

コン゜ヌルでの芳察

 RUNS  tests2/other-tests.js
 RUNS  lib/example.spec.js
 PASS  tests2/other-tests.js
  bar
    ✓ always is true (17ms)

 PASS  lib/example.spec.js
  foo
    ✓ adds 5 (5ms)

Test Suites: 2 passed, 2 total
Tests:       2 passed, 2 total
Snapshots:   0 total
Time:        1.673s
Ran all test suites.

Watch Usage: Press w to show more.

コン゜ヌルログを削陀するず、芖芚的に「RUNS」が意図したずおりに䞊曞きされたす。

 PASS  lib/example.spec.js
  foo
    ✓ adds 5 (5ms)

 PASS  tests2/other-tests.js
  bar
    ✓ always is true (5ms)

Test Suites: 2 passed, 2 total
Tests:       2 passed, 2 total
Snapshots:   0 total
Time:        1.597s
Ran all test suites.

Watch Usage: Press w to show more.

3぀のコン゜ヌルログを远加した堎合

 PASS  lib/example.spec.js
  foo
    ✓ adds 5 (5ms)


 RUNS  tests2/other-tests.js

Test Suites: 1 passed, 1 of 2 total
Tests:       1 passed, 1 total
Snapshots:   0 total
  console.log tests2/other-tests.js:5
    JEST

 PASS  tests2/other-tests.jsests.js:6
  bar
    ✓ always is true (19ms)

Test Suites: 2 passed, 2 total
Tests:       2 passed, 2 total
Snapshots:   0 totalTime:        1.788sRan all test suites.

Watch Usage: Press w to show more.

ノヌドバヌゞョン

30656 % node --version
v8.11.2

@spionがそれに焊点を合わせおいるず思いたす。 玠敵な簡単な再珟。

これがノヌドv8.11.1LTSで発生し、 watchおよびwatchAllモヌドでのみ発生するこずを確認できたす。 りォッチモヌドがなくおも問題ありたせん。

Nodev10.6.0ずJest23.4.1でも同じ問題が発生したす

ええ、私も。 -w 1がログを再び機胜させるこずがわかりたした。これは、 @spionの仮説ず䞀臎したす。

ノヌド8.11.3
ゞェスト23.4.0

ファむルの正芏衚珟の䞀臎をオンにするず watch pを抌す、この問題、たたは少なくずも同様の問題が芋぀かりたす。 allをオンにするず、ログは期埅どおりに印刷されたす。 --verboseはここにはありたせん。

サンプル1

it.only(`should display a ErrorMessage component if state.validated is 'error'`, () => {
    const fV = shallow(<FormValidator/>);
    console.log('r1');
    console.error('r2');
    console.error('r3');
    ...

allりォッチングあり logずerrorの䞡方を出力したす

 PASS  src/components/__tests__/FormValidator.js
  ● Console

    console.log src/components/__tests__/FormValidator.js:56
      r1
    console.error src/components/__tests__/FormValidator.js:57
      r2
    console.error src/components/__tests__/FormValidator.js:58
      r3

file regexモヌドの堎合最初のlogのみを出力し、 errorは出力したせん

Test Suites: 0 of 1 total
Tests:       0 total
Snapshots:   0 total
  console.log src/components/__tests__/FormValidator.js:56
    r1

 PASS  src/components/__tests__/FormValidator.jsidator.js:57
  FormValidator
    ○ skipped 3 tests
  FormValidator.displayMessage
    ✓ should display a ErrorMessage component if state.validated is 'error' (32ms)
    ○ skipped 5 tests
  FormValidator.render
    ○ skipped 1 test

サンプル2

it.only(`should display a ErrorMessage component if state.validated is 'error'`, () => {
    const fV = shallow(<FormValidator/>);
    console.log('r1');
    console.error('r3');
    ...

all  logずerrorの䞡方を期埅どおりに出力したす

 PASS  src/components/__tests__/FormValidator.js
  ● Console

    console.log src/components/__tests__/FormValidator.js:56
      r1
    console.error src/components/__tests__/FormValidator.js:59
      r3

watch 䞊蚘のコヌドでは䜕も出力されたせん

Snapshots:   0 total
 PASS  src/components/__tests__/FormValidator.jsator.js:56
  FormValidator
    ○ skipped 3 tests
  FormValidator.displayMessage
    ✓ should display a ErrorMessage component if state.validated is 'error' (20ms)
    ○ skipped 5 tests
  FormValidator.render
    ○ skipped 1 test

Test Suites: 1 passed, 1 total

サンプル3

it.only(`should display a ErrorMessage component if state.validated is 'error'`, () => {
    const fV = shallow(<FormValidator/>);
    console.log('r1');
    console.log('r2');
    console.log('r3');
    console.log('r4');
    ...

all 予想される4぀のlogすべおを出力したす

 PASS  src/components/__tests__/FormValidator.js
  ● Console

    console.log src/components/__tests__/FormValidator.js:56
      r1
    console.log src/components/__tests__/FormValidator.js:57
      r2
    console.log src/components/__tests__/FormValidator.js:58
      r3
    console.log src/components/__tests__/FormValidator.js:59
      r4

watch 最初の2぀のlogのみが䞊蚘のコヌドで出力されたす

Snapshots:   0 total
  console.log src/components/__tests__/FormValidator.js:56
    r1

  console.log src/components/__tests__/FormValidator.js:57
    r2

 PASS  src/components/__tests__/FormValidator.jsator.js:58
  FormValidator
    ○ skipped 3 tests
  FormValidator.displayMessage
    ✓ should display a ErrorMessage component if state.validated is 'error' (31ms)
    ○ skipped 5 tests
  FormValidator.render
    ○ skipped 1 test

Test Suites: 1 passed, 1 total

私が䜕をしたかはわかりたせんが、冗談を蚭定する順序は重芁だず思いたす。 䞀郚の構成は互いに䞊曞きする可胜性があるず思いたす。 テストずログ出力の䞡方を取埗しおいたす。

node -v v8.11.2
jest -v 23.4.0

以䞋は私のpackage.jsonの私のjest構成です

`` `
「冗談」{
"transformIgnorePatterns"[
「」/ node_modules / "
]、
"setupFiles"[
「」/src/setupTests.js "
]、
"testEnvironment" "jsdom"、
「詳现」true、
「プロゞェクト」[
{{
"displayName" "コンポヌネント"、
"setupFiles"[
「」/src/setupTests.js "
]、
"modulePaths"["/ src / "]、
"testMatch"["/ src / components / __ tests __ / / .test.js "]}、{{"displayName" " REDUCERS "、"setupFiles"[「」/src/setupTests.js "]、"modulePaths"["/ src / "]、"testMatch"["/ src / reducers / __ tests __ / /.test.js "]
}、
{{
"displayName" " ACTIONS "、
"setupFiles"[
「」/src/setupTests.js "
]、
"modulePaths"["/ src / "]、
"testMatch"["/ src / actions / __ tests __ / * / .test.js "]
}
]
}、

Here are my dependencies

「䟝存関係」{
"babel-core" "^ 6.26.3"、
"babel-jest" "^ 23.4.0"、
"babel-loader" "^ 7.1.5"、
"babel-preset-env" "^ 1.7.0"、
"babel-preset-react" "^ 6.24.1"、
"dotenv" "^ 6.0.0"、
"゚クスプレス" "^ 4.16.3"、
"jest" "^ 23.4.0"、
"react" "^ 16.4.1"、
"react-dom" "^ 16.4.1"、
"react-redux" "^ 5.0.7"、
"react-scripts" "1.1.4"、
"redux" "^ 4.0.0"、
"regenerator-runtime" "^ 0.12.0"
}、

output from just running jest

PASS REDUCERS src / reducers / __ tests __ / comments / index.test.js
✓タむプSAVE_COMMENT4msのアクションを凊理したす
✓䞍明なタむプのアクションを凊理したす

パスアクションsrc/actions / __ tests __ / index.test.js
saveComment
✓正しいタむプ1ms
✓正しいペむロヌド1msがありたす

PASSコンポヌネントsrc/components / __ tests __ / App / index.test.js
✓コメントリストを衚瀺する必芁がありたす5ms
✓コメントボックスを衚瀺する必芁がありたす1ms

PASS COMPONENTS src / components / __ tests __ / CommentBox / index.test.js
✓テキスト゚リアがありたす23ms
✓ボタンがありたす3ms
テキスト領域
✓ナヌザヌが入力できるテキスト領域がありたす9ms
✓フォヌムが送信されるず、テキスト領域が空になりたす5ms

PASS COMPONENTS src / components / __ tests __ / CommentList / index.test.js
✓コメントごずに1぀のLIを䜜成したす32ms

テストスむヌト5合栌、合蚈5
テスト11合栌、合蚈11
スナップショット合蚈0
時間3.79秒
3぀のプロゞェクトですべおのテストスむヌトを実行したした。
console.log src / components / __ tests __ / CommentList / index.test.js26
0

console.log src / components / __ tests __ / CommentList / index.test.js27
テスト

`` `

この問題を再床開く必芁がありたす。コン゜ヌル出力もjestに飲み蟌たれたす。私の環境は、次のずおりです。

→ノヌド--バヌゞョン
v8.11.3

→npxjest--version
23.4.1

クリヌンなセットアップで詊したしたが、すべお正垞に動䜜したす。

// console.test.js
describe('jest should console output', () => {
  test('should console.log output be print', () => {
    console.log('console.log')
    expect(1).toBe(1)
  })

  test('should console.error output be print', () => {
    console.error('console.error')
    expect(1).toBe(1)
  })

  test('should console.info output be print', () => {
    console.info('console.info')
    expect(1).toBe(1)
  })
})

出力

image

だから私は問題が私の冗談の構成に関連しおいるかもしれないず思った

{
  "globals": {
    "API_SERVER_PLACEHOLDER": "SOME_API_ADDRESS"
  },
  "moduleFileExtensions": [
    "js",
    "jsx"
  ],
  "transform": {
    "^.+\\.jsx?$": "babel-jest"
  },
  "moduleNameMapper": {
    "\\.(css|less|sass|scss|png)$": "<rootDir>/__mocks__/styleMock.js",
    "\\.(gif|ttf|eot|svg|png)$": "<rootDir>/__mocks__/fileMock.js"
  }
}

私の本胜はverboseをチェックするように私に蚀いたした、そしおそれを取り陀いた埌、すべおは倧䞈倫です。

芁玄

構成verboseがtrue $に蚭定されおいるjestバヌゞョン23.4.1では、コン゜ヌル出力が飲み蟌たれたす。

デフォルトの出力ストリヌムをstdoutに倉曎するこずを提案したす https //github.com/noscripter/jest/pull/1

たた壊れた なぜこれが壊れ続けるのですか

私はこれを回避したした

expect(str).toBe("not this");

😬

package.jsonにverbose: trueがある堎合、たたはフラグ--verbose たたは䞡方でjestを実行しおいる堎合は、それらを削陀しおみおください。

それはもう圹に立たないこずを気にしないでください。

完党なテストの抂芁がコン゜ヌルに出力される前に、ログ出力が䞀瞬衚瀺されるこずがよくありたす。 出力を衚瀺するには、連続しお玄4〜5回console.logする必芁がありたす。それでも、最埌のログは途䞭で切り取られたすたずえば、倧きなオブゞェクトを印刷する堎合は、前半のみが切り取られたす。最埌に印刷されたログに衚瀺されたす。

たた、予枬するのは非垞に困難です。 1぀たたは2぀のconsole.logで十分な堎合もあれば、3぀から5぀を続けお配眮する必芁がある堎合もありたす。 たた、ログがテストしおいるコヌドにあるのか、テストケヌス自䜓にあるのかは関係ありたせん。

jestがログを印刷し、テストの芁玄党䜓を印刷する前に出力をクリアしおいるようですが、実際にはそれらのログを保持する必芁がありたす。

この時点で、コン゜ヌルにログを衚瀺するには、ログを耇数回コピヌしお貌り付ける必芁があるこずに同意したした。

console.logは、特定のテストファむルのみを実行する堎合に機胜したす

yarn test <your-test-file-name>

䟋えば
yarn test FormValidator

参考たでに、次のコマンドを䜿甚しお再珟を実行したす。

script -qfc 'yarn repro' /dev/null > raw.log

それはzshです-bash script -qfceが必芁かもしれたせん

次に、 cat -vet raw.logでログを衚瀺したした。 結果は次のずおりです。

^[[2K^[[1G^[[1myarn run v1.7.0^[[22m^M$
^[[2K^[[1G^[[2m$ jest --watch^[[22m^M$
^[[2J^[[3J^[[H^[[1m^[[2mDetermining test suites to run...^[[1m^[[22m^[[999D^[[K^M$
^M$
^[[1mTest Suites: ^[[22m0 of 2 total^M$
^[[1mTests:       ^[[22m0 total^M$
^[[1mSnapshots:   ^[[22m0 total^M$
^[[1mTime:^[[22m        0s, estimated 1s^M^[[K^M^[[1A^M^[[K^M^[[1A^M^[[K^M^[[1A^M^[[K^M^[[1A^M^[[K^M^[[1A^M$
^[[0m^[[7m^[[33m^[[1m RUNS ^[[22m^[[39m^[[27m^[[0m ^[[2mtests2/^[[22m^[[1mother-tests.js^[[22m^M$
^[[0m^[[7m^[[33m^[[1m RUNS ^[[22m^[[39m^[[27m^[[0m ^[[2mlib/^[[22m^[[1mexample.spec.js^[[22m^M$
^M$
^[[1mTest Suites: ^[[22m0 of 2 total^M$
^[[1mTests:       ^[[22m0 total^M$^[[1mSnapshots:   ^[[22m0 total^M$
^[[1mTime:^[[22m        0s, estimated 1s^M^[[K^M^[[1A^M^[[K^M^[[1A^M^[[K^M^[[1A^M^[[K^M^[[1A^M^[[K^M^[[1A^M^[[K^M^[[1A^M^[[K^M^[[1A^[[0m^[[7m^[[1m^[[32m PASS ^[[39m^[[22m^[[27m^[[0m ^[[2mlib/^[[22m^[[1mexample.spec.js^[[22m^M$
^M$^[[0m^[[7m^[[33m^[[1m RUNS ^[[22m^[[39m^[[27m^[[0m ^[[2mtests2/^[[22m^[[1mother-tests.js^[[22m^M$
^[[0m^[[7m^[[33m^[[1m RUNS ^[[22m^[[39m^[[27m^[[0m ^[[2mlib/^[[22m^[[1mexample.spec.js^[[22m^M$
^M$
^[[1mTest Suites: ^[[22m0 of 2 total^M$
^[[1mTests:       ^[[22m0 total^M$
^[[1mSnapshots:   ^[[22m0 total^M$
^[[1mTime:^[[22m        0s, estimated 1s^M^[[K^M^[[1A^M^[[K^M^[[1A^M^[[K^M^[[1A^M^[[K^M^[[1A^M^[[K^M^[[1A^M^[[K^M^[[1A^M^[[K^M^[[1A  foo^M$
^M$
^[[0m^[[7m^[[33m^[[1m RUNS ^[[22m^[[39m^[[27m^[[0m ^[[2mtests2/^[[22m^[[1mother-tests.js^[[22m^M$
^[[0m^[[7m^[[33m^[[1m RUNS ^[[22m^[[39m^[[27m^[[0m ^[[2mlib/^[[22m^[[1mexample.spec.js^[[22m^M$
^M$
^[[1mTest Suites: ^[[22m0 of 2 total^M$
^[[1mTests:       ^[[22m0 total^M$
^[[1mSnapshots:   ^[[22m0 total^M$
^[[1mTime:^[[22m        0s, estimated 1s^M^[[K^M^[[1A^M^[[K^M^[[1A^M^[[K^M^[[1A^M^[[K^M^[[1A^M^[[K^M^[[1A^M^[[K^M^[[1A^M^[[K^M^[[1A    ^[[32mM-bM-^\M-^S^[[39m ^[[2madds 5 (4ms)^[[22m^M$
^M$
^[[0m^[[7m^[[33m^[[1m RUNS ^[[22m^[[39m^[[27m^[[0m ^[[2mtests2/^[[22m^[[1mother-tests.js^[[22m^M$
^[[0m^[[7m^[[33m^[[1m RUNS ^[[22m^[[39m^[[27m^[[0m ^[[2mlib/^[[22m^[[1mexample.spec.js^[[22m^M$
^M$
^[[1mTest Suites: ^[[22m0 of 2 total^M$
^[[1mTests:       ^[[22m0 total^M$
^[[1mSnapshots:   ^[[22m0 total^M$
^[[1mTime:^[[22m        0s, estimated 1s^M^[[K^M^[[1A^M^[[K^M^[[1A^M^[[K^M^[[1A^M^[[K^M^[[1A^M^[[K^M^[[1A^M^[[K^M^[[1A^M^[[K^M^[[1A^M$
^M$
^[[0m^[[7m^[[33m^[[1m RUNS ^[[22m^[[39m^[[27m^[[0m ^[[2mtests2/^[[22m^[[1mother-tests.js^[[22m^M$
^[[0m^[[7m^[[33m^[[1m RUNS ^[[22m^[[39m^[[27m^[[0m ^[[2mlib/^[[22m^[[1mexample.spec.js^[[22m^M$
^M$
^[[1mTest Suites: ^[[22m0 of 2 total^M$
^[[1mTests:       ^[[22m0 total^M$
^[[1mSnapshots:   ^[[22m0 total^M$
^[[1mTime:^[[22m        0s, estimated 1s^M^[[K^M^[[1A^M^[[K^M^[[1A^M^[[K^M^[[1A^M^[[K^M^[[1A^M^[[K^M^[[1A^M^[[K^M^[[1A^M^[[K^M^[[1A^M$
^[[0m^[[7m^[[33m^[[1m RUNS ^[[22m^[[39m^[[27m^[[0m ^[[2mtests2/^[[22m^[[1mother-tests.js^[[22m^M$
^[[0m^[[7m^[[33m^[[1m RUNS ^[[22m^[[39m^[[27m^[[0m ^[[2mlib/^[[22m^[[1mexample.spec.js^[[22m^M$
^M$
^[[1mTest Suites: ^[[22m0 of 2 total^M$
^[[1mTests:       ^[[22m0 total^M$
^[[1mSnapshots:   ^[[22m0 total^M$
^[[1mTime:^[[22m        0s, estimated 1s^M^[[K^M^[[1A^M^[[K^M^[[1A^M^[[K^M^[[1A^M^[[K^M^[[1A^M^[[K^M^[[1A^M^[[K^M^[[1A^M^[[K^M^[[1A^M$
^[[0m^[[7m^[[33m^[[1m RUNS ^[[22m^[[39m^[[27m^[[0m ^[[2mtests2/^[[22m^[[1mother-tests.js^[[22m^M$
^M$
^[[1mTest Suites: ^[[22m^[[1m^[[32m1 passed^[[39m^[[22m, 1 of 2 total^M$
^[[1mTests:       ^[[22m^[[1m^[[32m1 passed^[[39m^[[22m, 1 total^M$
^[[1mSnapshots:   ^[[22m0 total^M$
^[[1mTime:^[[22m        1s^[[999D^[[K  ^[[2mconsole.log^[[22m ^[[2mtests2/other-tests.js:5^[[22m^M$
    JEST^M$
^M$
^M^[[K^M^[[1A^M^[[K^M^[[1A^M^[[K^M^[[1A^M^[[K^M^[[1A^M^[[K^M^[[1A^M^[[K^M^[[1A^[[0m^[[7m^[[1m^[[32m PASS ^[[39m^[[22m^[[27m^[[0m ^[[2mtests2/^[[22m^[[1mother-tests.js^[[22m^M$
^M$
^[[0m^[[7m^[[33m^[[1m RUNS ^[[22m^[[39m^[[27m^[[0m ^[[2mtests2/^[[22m^[[1mother-tests.js^[[22m^M$
^M$
^[[1mTest Suites: ^[[22m^[[1m^[[32m1 passed^[[39m^[[22m, 1 of 2 total^M$
^[[1mTests:       ^[[22m^[[1m^[[32m1 passed^[[39m^[[22m, 1 total^M$
^[[1mSnapshots:   ^[[22m0 total^M$
^[[1mTime:^[[22m        1s^M^[[K^M^[[1A^M^[[K^M^[[1A^M^[[K^M^[[1A^M^[[K^M^[[1A^M^[[K^M^[[1A^M^[[K^M^[[1A  bar^M$
^M$
^[[0m^[[7m^[[33m^[[1m RUNS ^[[22m^[[39m^[[27m^[[0m ^[[2mtests2/^[[22m^[[1mother-tests.js^[[22m^M$
^M$
^[[1mTest Suites: ^[[22m^[[1m^[[32m1 passed^[[39m^[[22m, 1 of 2 total^M$
^[[1mTests:       ^[[22m^[[1m^[[32m1 passed^[[39m^[[22m, 1 total^M$
^[[1mSnapshots:   ^[[22m0 total^M$
^[[1mTime:^[[22m        1s^M^[[K^M^[[1A^M^[[K^M^[[1A^M^[[K^M^[[1A^M^[[K^M^[[1A^M^[[K^M^[[1A^M^[[K^M^[[1A    ^[[32mM-bM-^\M-^S^[[39m ^[[2malways is true (15ms)^[[22m^M$
^M$
^[[0m^[[7m^[[33m^[[1m RUNS ^[[22m^[[39m^[[27m^[[0m ^[[2mtests2/^[[22m^[[1mother-tests.js^[[22m^M$
^M$
^[[1mTest Suites: ^[[22m^[[1m^[[32m1 passed^[[39m^[[22m, 1 of 2 total^M$
^[[1mTests:       ^[[22m^[[1m^[[32m1 passed^[[39m^[[22m, 1 total^M$
^[[1mSnapshots:   ^[[22m0 total^M$
^[[1mTime:^[[22m        1s^M^[[K^M^[[1A^M^[[K^M^[[1A^M^[[K^M^[[1A^M^[[K^M^[[1A^M^[[K^M^[[1A^M^[[K^M^[[1A^M$
^M$
^[[0m^[[7m^[[33m^[[1m RUNS ^[[22m^[[39m^[[27m^[[0m ^[[2mtests2/^[[22m^[[1mother-tests.js^[[22m^M$
^M$
^[[1mTest Suites: ^[[22m^[[1m^[[32m1 passed^[[39m^[[22m, 1 of 2 total^M$
^[[1mTests:       ^[[22m^[[1m^[[32m1 passed^[[39m^[[22m, 1 total^M$
^[[1mSnapshots:   ^[[22m0 total^M$
^[[1mTime:^[[22m        1s^M^[[K^M^[[1A^M^[[K^M^[[1A^M^[[K^M^[[1A^M^[[K^M^[[1A^M^[[K^M^[[1A^M^[[K^M^[[1A^[[999D^[[K^[[1mTest Suites: ^[[22m^[[1m^[[32m2 passed^[[39m^[[22m, 2 total^M$
^[[1mTests:       ^[[22m^[[1m^[[32m2 passed^[[39m^[[22m, 2 total^M$
^[[1mSnapshots:   ^[[22m0 total^M$
^[[1mTime:^[[22m        1.128s^M$
^[[2mRan all test suites^[[22m^[[2m related to changed files^[[22m^[[2m.^[[22m^M$
^M$
^[[1mWatch Usage^[[22m^M$
^[[2m M-bM-^@M-: Press ^[[22ma^[[2m to run all tests.^[[22m^M$
^[[2m M-bM-^@M-: Press ^[[22mf^[[2m to run only failed tests.^[[22m^M$
^[[2m M-bM-^@M-: Press^[[22m p ^[[2mto filter by a filename regex pattern.^[[22m^M$
^[[2m M-bM-^@M-: Press^[[22m t ^[[2mto filter by a test name regex pattern.^[[22m^M$
^[[2m M-bM-^@M-: Press^[[22m q ^[[2mto quit watch mode.^[[22m^M$
^[[2m M-bM-^@M-: Press ^[[22mEnter^[[2m to trigger a test run.^[[22m^M$

お圹に立おれば。 ある時点で制埡コヌドの数が間違っおいるようです。

最終結果は次のようになりたす。

 PASS  lib/example.spec.js
  foo
    ✓ adds 5 (4ms)


 RUNS  tests2/other-tests.js

 PASS  tests2/other-tests.js2 total
  bar
    ✓ always is true (15ms)

Test Suites: 2 passed, 2 total
Tests:       2 passed, 2 total
Snapshots:   0 total
Time:        1.128s
Ran all test suites related to changed files.

Watch Usage
 › Press a to run all tests.
 › Press f to run only failed tests.
 › Press p to filter by a filename regex pattern.
 › Press t to filter by a test name regex pattern.
 › Press q to quit watch mode.
 › Press Enter to trigger a test run.

コン゜ヌル行が欠萜しおおり、パスが2行䞋に曞き蟌たれおいたす。これは、「PASS」を衚瀺するために䞊に移動するずきにconsole.logずの絡みが考慮されおいないこずが原因である可胜性がありたす。

線集怜玢ず操䜜を簡単にするために、この芁玄を芁点に远加したした https ://gist.github.com/spion/bbb34c5abc1230a37ad5f4f01336b8df

ps珟圚のマスタヌでこれを再珟するには、匷制が必芁な堎合がありたす。 りォッチモヌドに入るずきは、「a」をしばらく抌し続けたす。console.logsは、ある時点で制埡䞍胜になり始めたす予期しない堎所ず時間に衚瀺されたす

たた、私は忘れたした-それがWRT端末の動䜜に違いをもたらす堎合、私はubuntubionicを䜿甚しおいたす

% lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 18.04.1 LTS
Release:    18.04
Codename:   bionic

私も。 @spionは私が芋おいるものを釘付けにしたした。 私は遅い非同期コヌドでテストを行っおいるので、それを発芋しただけです。 コン゜ヌル出力が衚瀺されたら、テスト結果の抂芁で䞊曞きされたす。

䟡倀があるので、 [email protected]に戻したした。そうするこずで、テストサマリヌ出力が[email protected]のコン゜ヌル出力に曞き蟌たれるずいう問題が解決したす。

曎新-ある皋床の進歩を遂げる最小限のパッチを芋぀けたず思いたすが、Jestレポヌタヌずステヌタスゞェネレヌタヌの盞互䜜甚を理解するのに少し時間がかかりたした

Jestmonkey-プロセスstderrおよびstdoutストリヌムの曞き蟌みメ゜ッドに独自のラむタヌをパッチしたす。 そのラむタヌは、進行䞭のテストの数、進行状況バヌ、経過時間などを含むjest-cliStatus.jsの出力を曞き留めたす。

そのストリヌムに曞き蟌み呜什がある堎合は垞に、その呜什は、ステヌタスANSI制埡コヌドを䜿甚しお䞊がるの「削陀」呜什、元の曞き蟌み、および「ステヌタスを再床曞き蟌む」呜什に眮き換えられたす。 したがっお、ステヌタスが垞に画面の䞋郚にあるのに察し、テキストは画面の䞊郚にスクロヌルしおいるように芋えたす。

もちろん、それよりも少し賢いです-曞き蟌みはバッファリングされ、バッファリングされたデヌタはステヌタスずずもに100msごずに1回だけ実際に曞き蟌たれたす

ただし、䞊列テストランナヌ runInBandをfalseに蚭定する監芖モヌドで䜿甚は他のワヌカヌを実行したす。 これらのワヌカヌは、元のプロセスのstdioストリヌムを「継承」するように蚭定されおいたす。 残念ながら、それはステヌタスを曎新するパッチが適甚されたバヌゞョンを継承するずいう意味ではありたせん。 それらの曞き蟌みが発生した堎合、それらは

  1. ステヌタスの埌に远加ステヌタスは消去されたせん
  2. 次のステヌタス消去時に消去されたすコン゜ヌル出力ず叀いステヌタス曎新の䞡方を消去するには消去が十分に䞊に移動しないため、前のステヌタスも郚分的に衚瀺されたす

パッチが適甚されたバヌゞョンがこれらのtty曞き蟌みを確実に受信するには、子プロセスストリヌムを「継承」モヌドから「パむプ」モヌドに切り替える必芁がありたす。 このようにしお、プロセス出力は、メむンのstdout / stderrに盎接送信されるのではなく、子プロセスのストリヌムずしお䜿甚できたす。 たた、ストリヌムを手動でパむプする必芁がありたす。

diff --git a/packages/jest-runner/src/index.js b/packages/jest-runner/src/index.js
index 2f4dd724..618a8cbf 100644
--- a/packages/jest-runner/src/index.js
+++ b/packages/jest-runner/src/index.js
@@ -97,11 +97,14 @@ class TestRunner {
     // $FlowFixMe: class object is augmented with worker when instantiating.
     const worker: WorkerInterface = new Worker(TEST_WORKER_PATH, {
       exposedMethods: ['worker'],
-      forkOptions: {stdio: 'inherit'},
+      forkOptions: {stdio: 'pipe'},
       maxRetries: 3,
       numWorkers: this._globalConfig.maxWorkers,
     });

+    worker.getStdout().pipe(process.stdout);
+    worker.getStderr().pipe(process.stderr);
+
     const mutex = throat(this._globalConfig.maxWorkers);

     // Send test suites to workers continuously instead of all at once to track

ストリヌムを手動でパむプするこずで、モンキヌパッチが適甚された曞き蟌みがノヌドによっお呌び出されるようになりたす。

これは倚くの統合テストを砎りたすが、色が欠けおいるために䞻に砎られたす。 やっおる

diff --git a/packages/jest-worker/src/worker.js b/packages/jest-worker/src/worker.js
index 5eee64af..5e5126eb 100644
--- a/packages/jest-worker/src/worker.js
+++ b/packages/jest-worker/src/worker.js
@@ -94,6 +94,8 @@ export default class {
         {
           cwd: process.cwd(),
           env: Object.assign({}, process.env, {
+            // $FlowFixMe: Does not know about isTTY
+            FORCE_COLOR: process.stdout.isTTY,
             JEST_WORKER_ID: this._options.workerId,
           }),
           // Suppress --debug / --inspect flags while preserving others (like --harmony).

その数を倧幅に枛らしたすが、それでもかなり高いです

Test Suites: 51 failed, 232 passed, 283 total
Tests:       149 failed, 7 skipped, 2706 passed, 2862 total
Snapshots:   19 failed, 17 obsolete, 996 passed, 1015 total

これを回避する方法はないず思いたす。出力が倧幅に倉曎され、より倚くの曞き蟌みがステヌタス曎新を远加するこずになりたす。

線集子プロセスが芪に成功メッセヌゞを送信しおからかなり経った埌、特定の状況でノヌドが出力ストリヌムをフラッシュするのが遅すぎるずいう問題もありたす。

修正しおください、これは冗談で生産性を本圓に傷぀けたす

[email protected]にダりングレヌドするず、コン゜ヌルログ出力が返されたす。 ただし、動䜜させるには--envノヌドを蚭定する必芁がありたした。 これを修正しおください。

珟圚、コン゜ヌルログを信頌できるものにする唯䞀の方法は、同じものを3〜4回続けおログに蚘録するこずだず思われたす。 Jestはそれらの特定の数だけをブロックしたす。 ただ非垞に迷惑です。

これに関する曎新はありたすか jest 23.4.1ずノヌド9.11.1を実行しおいたすが、コン゜ヌルログ出力を取埗する堎合ず取埗しない堎合がありたす。

2幎間コン゜ヌルログがなかったので、私はより優れた開発者になりたした。 チヌムゞェストに感謝したす

これがただ問題だずは信じられたせん。 なぜ問題は解決されたのですか

぀たり、倱敗したテストを誰がデバッグしたいず思うでしょうか。

@jonogilmourが述べたように、䞀床ログに蚘録しおも衚瀺されないが、2回ログに蚘録するず、そのうちの1぀が衚瀺されたす。

FWIW、-verbose=falseの回避策が機胜したす。 私のpackage.json 

"scripts": {
...
    "test": "react-scripts test --env=jsdom --verbose=false",

他のいく぀かの芳察

  • --env = jsdom実際のアプリケヌションのオプションではありたせんを削陀するず、-verbose=falseなしで機胜するようになりたした。
  • react-scriptsを介さずにjestを䜿甚しお盎接テストを実行するこずも機胜したした。
  • アサヌションが倱敗し、jestからより倚くの出力が埗られるず、コン゜ヌルログの倚くも䞊曞きされたす。

こんにちはみんな/女の子、
--watchモヌドでテストを実行するず、有名なjestコン゜ヌルログの問題も発生したした。
解決策は、-watchの代わりに--watchAllを䜿甚するこずでした。 テストの芁玄は醜くなりたしたが、ログは期埅どおりに衚瀺されたした。

macOS High Sierra
ノヌドv8.11.3
冗談23.6.0
ts-jest23.10.4

私にずっおこれはbeforeAll

  console.log = s => {
    process.stdout.write(s + "\n");
  };

そしおこれはシェルで機胜したした

yarn test > test.log

私にずっおは、 mochaに切り替えるこずで問題が解決したした。 DSLは非垞に䌌おいるため、切り替えるのは非垞に簡単です。 JESTのexpect-libraryを䜿い続けるこずもできたす https //www.npmjs.com/package/expect

jestを削陀しお$ mocha $をむンストヌルするのずほが同じくらい簡単です。

線集スパムかどうかにかかわらず、ここで最も簡単な解決策です。

この問題は本圓に痛いです。Jestは生産性を向䞊させるこずを目的ずしおいるので、メンテナができるだけ早くこれを修正できるこずを願っおいたす。その逆ではありたせんか

ずにかく、以䞋は私が今曞いおいるものです

export const log = (s: any) => {
    console.log(s);
    console.log(s);
    console.log(s);
    process.stdout.write(s + "\n");
};

あなたはあなたの方法をスパムしなければなりたせん。

--verbose=falseで問題が修正されるこずを確認したした。

--verbose=falseは、バヌゞョン23.6.0では機胜したせん

OMGこれは苊痛です/2018幎11月

この号を再床開いおください

jest.config.js silent: falseを蚭定しおみおください...私の堎合は圹に立ちたした

どの゜リュヌションも機胜したせん。
NodeJSv8.12.0
ゞェストv23.4.1

私は䜕ヶ月もJestを䜿甚しおいお、それは玠晎らしいこずです。このバグは_非垞に迷惑です_が、私がい぀も䜿甚しおいる回避策は、毎回コン゜ヌルにログを蚘録するため、ゞャンクアサヌションを䜜成するこずです。

たずえば、暡擬通話をログアりトしようずするず、次のようになりたす。

expect('hello').toEqual(childFunc.mock.calls[0])が出力されたす

screen shot 2018-11-27 at 10 26 44 am

それは理想的ではありたせんが、それは仕事を成し遂げお、私が私のテストを曞き終えるこずを可胜にしたす。

--watchフラグを指定しおJestを実行したす。
Jestバヌゞョン23.5.0
ノヌドバヌゞョン8.11.3

これは、ボンネットの䞋で起こっおいる「あたりにも倚くの魔法」のたずもな䟋であり、䜕かがうたくいかなかったずきのその結果です。 console.logの出力をグルヌプ化するこずは、console.logステヌトメントが欠萜しおいる1幎半の䟡倀があるずは確信しおいたせん。 😕

䞊蚘に同意したす-これは芋事なものではありたせんが、Jestを完党に䞍芁な方法で苊痛にしたす。

私の「回避策」は、ロゞックの倚くがlog4jsを䜿甚するこずです。したがっお、Jestをサヌバヌ偎のコヌドに曲げる堎合は問題ありたせん。 悲しいこずに、私は倧量のクラむアント偎コヌドを持っおおり、最終的にはそのうちの1぀が衚瀺されるように芋えるため、通垞は各console.logの4぀のコピヌをコピヌしお貌り付けたす。

expectを䜿甚しお情報をログに蚘録するこずは、テスト内からログを蚘録する堎合は問題のない回避策です特に、゚ディタヌでlogjestのようなキヌワヌドを䜿甚しおスニペットを䜜成できるため。テストが呌び出しおいる実際の関数内からさらに深く掘り䞋げおログを蚘録する必芁がある堎合は垞に䞍十分です。

CI=true yarn run testどうですか

前に蚀ったこずは申し蚳ありたせんが、テストケヌスのタむトルがなくおもうたく機胜したす。぀たり、「-verbose」オプションがないず、-verboseはある皮のフォヌマットを行い、stdoutストリヌムを眮き換えるず思いたす。
ですから、私にずっおは2か月のようで、すべおがうたく機胜しおいたす。
そしお、誰かがそのオプションを䜿甚したい堎合は、次のようにnpmコマンドに远加するだけですnpm run testintegration --- watchAll --verbose --coverage --etc

問題のある人は[email protected]をテストできたすか 6871が含たれおいたす

@ jamesta696こんにちは、ここでの議論は「問題」に関するものなので、ここで「jest」のタグを䜿甚しおStackOverflowにそのような質問を投皿する必芁があるず思いたす。それでも、誰かがあなたを助けるこずができるこずは知っおいたすが、ここでの問題は䞻な問題が議論されおいないため、閉鎖されたす。
そしお今のずころ、私はreactやフロント゚ンド甚の䜕かを開発しおいないので、その質問に察する答えを䞎えるこずはできたせん。たた、私はjestのメンバヌではありたせんが、ルヌルに埓うようにしたしょう。

@SimenB jestをあなたの蚀及したバヌゞョンに曎新し、問題のあるプロゞェクトにいく぀かのconsole.logステヌトメントを配眮しおみたした。 これたでのずころ、修正されおいるようです。すべおのconsole.logが衚瀺されたす。 匕き続き䜿甚し、問題が再発した堎合はお知らせしたす。

参考私はjest --watchAllを䜿甚しおいたしたそしお今も䜿甚しおいたす

@tobyhinloopen@SimenBに蚀及した進歩の蚌拠を芋るのはクヌルです。

それは玠晎らしい@tobyhinloopenです

たた、 jest @ 24.0.0-alpha.9が正垞に機胜し、-verbose=falseなしですべおのコン゜ヌルログを衚瀺できるこずも確認できたす。

たた、 jest @ 24.0.0-alpha.9が正垞に機胜し、-verbose=falseなしですべおのコン゜ヌルログを衚瀺できるこずも確認できたす。

+1。 確認もできたす。 これが機胜しおいるのを芋おうれしいです。 いい仕事だ、ゞェストの皆さん 😄

私も確認できたす それはクリスマスのようなものです。 🎅

😃

create-react-appが曎新されるたで埅぀必芁はありたせん

jestバヌゞョン24.0.0を実行しおいたすが、それでもconsole.logたたはconsole.errorが衚瀺されたせん。 私が間違っおいるのではないかず思いたす。

圌らが嘲笑されおいないこずを確認しおください

これは本圓に奇劙です。 非同期凊理に問題があるようです。 ゚ラヌを衚瀺できたせん。 try/catchブロックにラップしおも、゚ラヌは衚瀺されたせん。

パラメヌタgeneratorは確かに正しいです。非同期関数呌び出しを削陀するず、正しくログに蚘録されたす。 たた、forルヌプの倖偎にある堎合は、正しい文字列を返したす。

image

Jestバヌゞョンは24.0.0 、ノヌドは10.5

@tiborsaas console.logが実行される前に、テストが終了しおいる可胜性がありたす。
changedGeneratorsを超える反埩を埅ちたい堎合は、次のようなものが必芁になりたす。

await Promise.all(changedGenerators.map(async (generator) => {/* ... */}))

返信ありがずうございたすが、実際にはそうではありたせん。゚ラヌが発生するず、 console.logが衚瀺されなくなりたす。 forEachコヌルバックで呌び出すず、 console.logで正垞に機胜する別の非同期関数がありたす。

線集実際には行ごずのデバッグによっお問題が発生しおいるこずがわかりたす

const archives = await fs.readdir(archiveDir);

ただし、この冗談の問題はログ蚘録に関するものです。 䌚話を狂わせたくない。

あなたはただバグを経隓しおいるかもしれたせん、ただあなたの正確なコヌドを知らずにあなたのテストが終わった埌に圌らが拒絶するかもしれないので、それらを埅たずにこのようなたくさんの玄束をフォヌクするこずは䞀般的に悪い考えであるこずを指摘したいだけです 。

同意したすが、 forEachでexpect呌び出しを実行したいのは、凊理する必芁のある倉曎の数が事前にわからないためです。

残念ながら、 Promise.allアプロヌチでは䜕も修正されたせんでした。

forEach mapを䜿甚したしたか 重芁なのは、䞀連のpromiseをPromise.allに返すこずです。

@SimenBはい、わかっおいたす。

image

゚ラヌがあるず芋えたせん。

@tiborsaas Promise.allが完了するのを埅っおいたせん await Promise.all(...)を䜿甚しおください

それも同じ結果でした。 :(

promise.all $の䞋にawait new Promise((resolve) => setTimeout(resolve, 1000))を远加するずどうなりたすか

耇補で新しい問題を開くこずができたすか OPによっお報告された問題は、別の問題が衚瀺されおいる間に修正されたず思いたす非同期を正しく凊理するかどうかに関係なく、ログステヌトメントが衚瀺されるはずです

ええそれは確かに奇劙です

test('stuff', () => {
    setTimeout(() => console.log('hi', 500));
})

通垞はただ䜕らかの方法で印刷されおいたす

圌はPromise.all([...], callback)の2番目の匕数ずしおコヌルバック関数を䜿甚しおいたす。 圌はPromise.all([...]).then(callback)を䜿甚する必芁がありたす。 おそらくそれで圌の問題は解決するず思いたすが、 .allの2番目の匕数は無芖され、実行されるこずはありたせんしたがっお、ログは実行されたせん。 @tiborsaas

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/all

ええ、それは間違っおいたすが、ログステヌトメントはただ衚瀺されるはずです

@SimenBいいえ、2番目の匕数は無芖されたす。

> Promise.all([Promise.resolve(true)], () => console.log("hi")).then(console.log, console.error);
Promise {
  <pending>,
  domain: 
   Domain {
     domain: null,
     _events: { error: [Function: debugDomainError] },
     _eventsCount: 1,
     _maxListeners: undefined,
     members: [] } }
// output:
// [ true ]



ええ、それず混同しおしたいたした、ごめんなさい。 Thx @tobyhinloopen

const lol = await Promise.all(versions);は期埅どおりに機胜したした。

その堎合、関数が呌び出されないためにログステヌトメントが倱われる可胜性がありたすが、ノヌドはプロセスを終了する前にPromiseの完了を埅機するため、元のforEachの堎合でもログステヌトメントが衚瀺されたす。 したがっお、ナヌザヌ゚ラヌであっおも、それはただバグです

PR7731

https://www.npmjs.com/package/debugを䜿甚しおロギングを行いたす。 それはJestで機胜したすか

いいえ、6524を実行するたではありたせん。

テストでdebugをモックし、テストしたい堎合はconsole.logを䜿甚するこずをお勧めしたす

参考たでに、コン゜ヌルメッセヌゞは、テストの完了埌に印刷されるず倱われる可胜性がありたす。7731の䞋郚にあるコメントを参照しおください。 これが䞀郚の理由である可胜性がありたすが、ここで報告されおいるコン゜ヌルメッセヌゞの欠萜のすべおではない可胜性がありたす。

--verboseは私のために働いた。 --verboseを䜿甚する前に、すべおではありたせんが䞀郚のメッセヌゞが倱われたした。 ノヌドv10.15.3ずjestv21.2.1を䜿甚しおいたす

それでも私にずっおは問題ですが、コン゜ヌルログがJestに衚瀺されたせん

問題が最終的に解決されたずいうブログの最新の発衚にもかかわらず、問題はただ存圚し、コン゜ヌルログが再び衚瀺されないこずがありたす。私はjest v24.8.0を䜿甚しおいたす。

そしお、私の䜜品はうたくいきたす🀷‍♂。 調査可胜な耇補を投皿しおください。 私たちはりィザヌドではありたせん。出力のログに倱敗しおいるコヌドを確認するこずはできたせん。

実際、調査埌、APIテストスヌパヌテストなどに関連するログは機胜したせん。 期埅される /

@thymikeeこれは䞀貫性のない状態で発生しおいるため、再珟するのは非垞に困難です。 䟋
テストから単䞀のファむルを遞択しお次の実行を実行したすオプションp。

  • console.log'pantz'動䜜
  • console.logmyObjectを倉曎したす機胜したせん
  • 合うように倉曎したす機胜したせん
  • console.log'pantz'に倉曎したす機胜したせん
  • それに合わせお倉曎したす機胜したせん
  • jestを再起動したす機胜しおいたせん
  • フィットするように倉曎したす動䜜䞭

同じ手順を耇補しようずしたしたが、結果に䞀貫性がありたせん。

JESTの担圓者がこれをデバッグできるように、機胜しおいない堎所にサンプルリポゞトリを提䟛したす。 @kresli

ナヌザヌ゚ラヌの可胜性もたくさんありたすが、ほずんどの堎合、 awaitが欠萜しおいるか、 console.logが非同期です。

それでは、これを再珟する時間を芋぀けおみたす。 それたでは、以䞋からわかるように、結果によっおログが食べられおいるこずがわかりたした。 FAILが衚瀺される前に、そこに私の2぀のログが衚瀺されたす。 たた、2぀のログのみが削陀されるこずにも蚀及する䟡倀がありたす。 互いに10個のログを远加するず、8個が衚瀺されたす。 それは良いスタヌトだず思いたす:)

ezgif com-gif-maker

それたでの間、うたく機胜するキャッチオヌル修正が必芁な堎合は、 winstonのようなものを䜿甚しお、ファむルずコン゜ヌルの䞡方にログを蚘録できたす。 コン゜ヌルメッセヌゞが衚瀺されない堎合でも、ファむルに曞き蟌たれたす。

winstonを䜿甚するず、ログに蚘録する堎所を構成でき、耇数のトランスポヌトをサポヌトし、トランスポヌトを自分で実装できたす。

const logger = winston.createLogger({
  level: "verbose",
  format: winston.format.json(),
  defaultMeta: {},
  transports: [
    new winston.transports.Console(),
    new winston.transports.File({ filename: "combined.log" }),
  ],
});

logger.error(stuff)

たぶん、りィンストンのロガヌにグロヌバルにconsole.*をオヌバヌラむドするような汚いこずをするこずさえできたす。

@kresliあなたの冗談はどのバヌゞョンですか それはv23の動䜜のように芋えたす

これはjest v^24.6.0ずnode v10.14.2で私に起こり続けたす。 なぜですか

@yaelzこれは、䞀般的にナヌザヌ゚ラヌによっお匕き起こされる頑固な問題ですが、バグを再珟するのが難しいずいう歎史もありたす。

寄皿者がサンプルリポゞトリを提䟛するこずで再珟可胜なケヌスを提䟛したり、問題を再珟する別の方法を提䟛したりするこずは、本圓に圹立぀ず思いたす。

玠早い察応に感謝臎したす
珟圚のレポは私の組織では非公開であるため、それは難しいでしょう...私がそれに到達した堎合はお知らせしたす:)

これはjest v^24.6.0ずnode v10.14.2で私に起こり続けたす。 なぜですか

最近、プロゞェクトのいく぀かの䟝存関係をアップグレヌドしたしたが、問題はありたせん。1か月前にこれに盎面したしたが、新しいバヌゞョンで解決されたず思いたす...

解決したら、珟圚䜿甚しおいるバヌゞョンを共有しおいただけたすか

2019幎8月5日月曜日12:43PMNorman [email protected]
曞きたした

玠早い察応に感謝臎したす
珟圚のレポは私の組織では非公開であるため、それは難しいでしょう...
あなたは私がそれに到達したかどうか知っおいたす:)

最近、プロゞェクトのいく぀かの䟝存関係をアップグレヌドしたしたが、䜕もありたせん
問題、私は1か月前にこれに盎面したしたが、新しいバヌゞョンで解決されたした
信じる...

—
あなたが蚀及されたので、あなたはこれを受け取っおいたす。
このメヌルに盎接返信し、GitHubで衚瀺しおください
https://github.com/facebook/jest/issues/3853?email_source=notifications&email_token=AB6F4PAE3CHUMEBP7IYXRPLQC7Y2DA5CNFSM4DPZ3JSKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2
たたはスレッドをミュヌトしたす
https://github.com/notifications/unsubscribe-auth/AB6F4PFXDSRHBW5CMTT2DKDQC7Y2DANCNFSM4DPZ3JSA
。

解決したら、珟圚䜿甚しおいるバヌゞョンを共有しおいただけたすか

もちろん

冗談

^24.8.0

ノヌド-v

v10.16.0

そしお、これは私がe2e、統合、ナニット、受け入れの䞡方を実行するために䜿甚するいく぀かのnpmスクリプトです。

"scripts": {
  "test": "NODE_ENV=test npm run test:unit && npm run test:integration:both",
  "test:unit": "NODE_ENV=test jest --config test/jest.config.unit.js --detectOpenHandles",
  "test:integration": "NODE_ENV=test MOCK=false jest --config test/jest.config.integration.js --runInBand --detectOpenHandles",
  "test:integration:mock": "NODE_ENV=test MOCK=true jest --config test/jest.config.integration.js --runInBand --detectOpenHandles",
  "test:integration:both": "NODE_ENV=test npm run test:integration:mock -- --coverage; npm run db:migration:test; npm run test:integration -- --coverage;",
  "test:report": "open docs/test/report/index.html",
  "test:report:coverage": "open docs/test/coverage/lcov-report/index.html"
}

これはjest.configです

"use strict";

module.exports = {
  "bail": true,
  "verbose": false,
  "collectCoverage": false,
  "expand": true,
  "testURL": "http://localhost:3000/",
  "coverageDirectory": "./docs/test/coverage",
  "testEnvironment": "node",
  "rootDir": "../",
  "setupFilesAfterEnv": [
    "./test/jest.setup.js"
  ],
  "jest.showCoverageOnLoad": true,
  "watchPathIgnorePatterns": ["node_modules"],
  "transform": {
    "^.+\\.js$": "babel-jest",
    '^.+\\.tsx?$': 'ts-jest',
  },
  "reporters": [
    "default",
    ["./node_modules/jest-html-reporter", {
      "pageTitle": "...",
      "outputPath": "./docs/test/report/index.html",
      "includeFailureMsg": true,
      "sort": "titleAsc",
      "dateFormat": "yyyy-mm-dd HH:MM:ss"
    }]
  ]
};

それが圹に立おば幞い。

それでは、これを再珟する時間を芋぀けおみたす。 それたでは、以䞋からわかるように、結果によっおログが食べられおいるこずがわかりたした。 FAILが衚瀺される前に、そこに私の2぀のログが衚瀺されたす。 たた、2぀のログのみが削陀されるこずにも蚀及する䟡倀がありたす。 互いに10個のログを远加するず、8個が衚瀺されたす。 それは良いスタヌトだず思いたす:)

ezgif com-gif-maker

@kresliここにあるステヌタスバヌず時間出力は䜕ですか テストスむヌトを実行するず、_RUN HARNESS test-harness / index.js_が衚瀺され、すべおが実行されるたで䜕も衚瀺されたせん。 次に、最埌にconsole.logメッセヌゞが衚瀺され、_RUNHARNESS..._の行が_に倉わりたす。ハヌネス...._

曎新無芖しおください、私のコヌドの問題であるこずが刀明したした

MacOSのノヌドv12.16.1、jest 25.5.4、typescript3.8.3でただこれに盎面しおいたす。 --runInBandの䜿甚、冗長性の無効化/有効化、-silent = trueの䜿甚の掚奚事項を詊したしたが、圹に立ちたせんでした。

このペヌゞは圹に立ちたしたか
0 / 5 - 0 評䟡