๊ธฐ๋ฅ ์ ์์ฒญํ๊ฑฐ๋ ๋ฒ๊ทธ๋ฅผ ๋ณด๊ณ ํ์๊ฒ ์ต๋๊น?
ํน์ง
ํ์ฌ ํ๋์ ๋ฌด์์ ๋๊น?
jest --watch
๋ฅผ ์คํํ๋ฉด ์ฝ์ ๋ก๊น
์ด ํ์๋ฉ๋๋ค( --silent
๋ฅผ ์ฌ์ฉํ์ง ์๋ ํ).
ํ์ฌ ๋์์ด ๋ฒ๊ทธ์ธ ๊ฒฝ์ฐ ์ฌํํ๋ ๋จ๊ณ์ https://repl.it/languages/jest๋ฅผ ํตํด repl.it ๋ฐ๋ชจ๋ฅผ ์ ๊ณตํ๊ฑฐ๋ GitHub์์ yarn install
๋ฐ yarn test
ํ ์ ์๋ ์ต์ ์ ์ฅ์๋ฅผ ์ ๊ณต ํ์ธ์. yarn test
.
์์๋๋ ๋์์ ๋ฌด์์ ๋๊น?
๊ฐ์ฅ ํ์ํ ๋์ด๊ธฐ ๋๋ฌธ์ ์คํจํ ํ ์คํธ์ ๋ํ ์ฝ์ ๋ก๊น ๋ง ๋ณด๋ ๊ฒ์ด ๋งค์ฐ ์ ์ฉํฉ๋๋ค. ํ ์คํธ๋ฅผ ํต๊ณผํ๊ธฐ ์ํด ์ฝ์ ๋ก๊ทธ๋ฅผ ์จ๊ธธ ์ ์์ต๋๋ค.
์ ํํ Jest ๊ตฌ์ฑ์ ์ ๊ณตํ๊ณ Jest, ๋ ธ๋, yarn/npm ๋ฒ์ ๋ฐ ์ด์ ์ฒด์ ๋ฅผ ์ธ๊ธํ์ญ์์ค.
$ jest --version && node --version && yarn --version
v20.0.4
v6.10.3
0.27.5
๋งฅ OS X 10.12.5
jest.config.js :
module.exports = {
collectCoverageFrom: ['src/**/*.{js,jsx}'],
coveragePathIgnorePatterns: [
'<rootDir>/node_modules/',
'<rootDir>/src/core/server/webpack-isomorphic-tools-config.js',
'<rootDir>/src/locale/',
],
moduleDirectories: [
'src',
'node_modules',
],
moduleFileExtensions: [
'js',
'json',
'jsx',
],
moduleNameMapper: {
// Prevent un-transpiled react-photoswipe code being required.
'^photoswipe$': '<rootDir>/node_modules/photoswipe',
// Use the client-side logger by default for tests.
'^core/logger$': '<rootDir>/src/core/client/logger',
// Alias tests for tests to be able to import helpers.
'^tests/(.*)$': '<rootDir>/tests/$1',
// Replaces the following formats with an empty module.
'^.+\\.(scss|css|svg|woff|woff2|mp4|webm)$': '<rootDir>/tests/emptyModule',
},
setupTestFrameworkScriptFile: '<rootDir>/tests/setup.js',
testPathIgnorePatterns: [
'<rootDir>/node_modules/',
'<rootDir>/(assets|bin|config|coverage|dist|docs|flow|locale|src)/',
],
testMatch: [
'**/[Tt]est(*).js?(x)',
'**/__tests__/**/*.js?(x)',
],
transform: {
'^.+\\.js$': 'babel-jest',
// This transforms images to be a module that exports the filename.
// Tests can assert on the filenname.
'^.+\\.(jpg|jpeg|gif|png)$': '<rootDir>/tests/fileTransformer',
},
transformIgnorePatterns: [
'<rootDir>/node_modules/',
],
verbose: false,
};
๋ง์ถคํ ๋ฆฌํฌํฐ๋ฅผ ์์ฑํ ์ ์์ต๋๋ค. CC @aaronabramov
๋ค์์ ํ ์คํธ์ ์์ ๋๋ค. https://github.com/facebook/jest/blob/master/integration_tests/custom_reporters/reporters/test_reporter.js.
์๋ ํ์ธ์, ์ ์ฉํ ์ ๋ณด ๊ฐ์ฌํฉ๋๋ค.
๊ทธ๋ฌ๋ ๋ง์ถคํ ๋ฆฌํฌํฐ๋ฅผ ์์ฑํ๋ ค๊ณ ์๋ํ์ง๋ง ๋ช ๊ฐ์ง ๊ฑธ๋ฆผ๋์ด ๋ฐ์ํ์ต๋๋ค.
--silent
๋ฅผ ์ ๋ฌํ๊ณ (๊ธฐ๋ณธ ๋ฆฌํฌํฐ๊ฐ ์ฝ์ ๋ก๊น
์ ์จ๊ธฐ๋๋ก) ์ฌ์ฉ์ ์ง์ ๋ฆฌํฌํฐ๋ฅผ ๊ตฌ์ฑ์ ์ถ๊ฐํ๋ฉด ๋ด ๊ตฌ์ฑ์ ์ฌ์ด ๋ฐฉ๋ฒ์ด ์์ต๋๋ค. ๋ก๊น
์ ์ธ์ํ๋ ์ฌ์ฉ์ ์ ์ ๋ฆฌํฌํฐ. --silent
์ต์
๋๋ฌธ์ ๋ฆฌํฌํฐ ํด๋์ค๊ฐ ๋ ์ด์ ๋ฒํผ๋ง๋ ์ฝ์์ ์ก์ธ์คํ ์ ์๋ ๊ฒ ๊ฐ์ต๋๋ค.์ด ๋๋ฌธ์ ํ ์คํธ์ ์คํจํ ๊ฒฝ์ฐ์๋ง ์ฝ์์ ํ์ํ๋ ๊ตฌ์ฑ ๊ฐ์ ๋์ ํ๋ ํจ์น๋ฅผ Jest์ ์ ์ํ๊ณ ์ถ์ต๋๋ค. ๊ทธ๋ฐ ํจ์น๋ฅผ ๊ณ ๋ คํ์๊ฒ ์ต๋๊น?
์ด๊ฒ์ ๋ถ๋ช ํ ํ ์คํธ๊ฐ ํ์ํ๊ณ ๊ตฌ์ฑ ๊ฐ์ ํ์ธํด์ผ ํ์ง๋ง ์ฌ๊ธฐ์ ์ผ๋ฐ์ ์ธ ์์ด๋์ด๊ฐ ์์ต๋๋ค(์๋ ์ค).
diff --git a/packages/jest-cli/src/reporters/default_reporter.js b/packages/jest-cli/src/reporters/default_reporter.js
index 08d4a9f2..adedbdd3 100644
--- a/packages/jest-cli/src/reporters/default_reporter.js
+++ b/packages/jest-cli/src/reporters/default_reporter.js
@@ -176,7 +176,8 @@ class DefaultReporter extends BaseReporter {
this.log(getResultHeader(result, config));
const consoleBuffer = result.console;
- if (consoleBuffer && consoleBuffer.length) {
+ const testFailed = result.numFailingTests > 0;
+ if (testFailed && consoleBuffer && consoleBuffer.length) {
this.log(
' ' +
TITLE_BULLET +
์ด ์์ด๋์ด๊ฐ ๋ง์์ ๋ค์ง๋ง ๊ณ ๋ คํด์ผ ํ ์ฌํญ์ด ๋ง์ด ์์ต๋๋ค.
์จ๊ฒจ์ง ์ถ๋ ฅ์ ๋ํ ์ ๋ณด๋ฅผ ์ถ๊ฐํด์ผ ํฉ๋๋ค.
PASS __tests__/my_test.js (hidden output)
๋ช ๊ฐ์ง ํ ์คํธ ๋๋ ๋จ์ผ ํ ์คํธ๋ฅผ ์คํํ ๋๋ ๋นํ์ฑํํด์ผ ํฉ๋๋ค(์ ์ฒด ํ ์คํธ ์คํ์๋ง ํ์ฑํํ๋ ๊ฒ ๊ฐ์ต๋๋ค)
@cpojer ์ด์ ๋ํ ์๊ฐ์ด ์์ต๋๊น?
๋๋ ์ด ๋์์ด ํผ๋์ค๋ฝ๋ค๊ณ ์๊ฐํ๋ฉฐ Jest๊ฐ ์ํ์ ๊ด๊ณ์์ด ํ ์คํธ๋น ์ถ๋ ฅํ๋ ๋ด์ฉ์์ ์ผ๊ด์ฑ์ ์ ์งํ๋ ๊ฒ์ ์ ํธํฉ๋๋ค.
@cpojer ์ ์๊ฒ ์คํจํ ํ ์คํธ์ ๊ด๋ จ๋ ์ฝ์ ๋ฉ์์ง๋ฅผ ์ฐพ๋ ๊ฒ์ ํผ๋์ค๋ฝ์ต๋๋ค.
ํํ์ผ๋ก, ๋ด๊ฐ ํ์ฅํ ์ ์๋๋ก jest.js ์์ DefaultReporter
๋ฅผ ๋
ธ์ถํ๋ ํจ์น๋ฅผ ์๋ฝํ์๊ฒ ์ต๋๊น? ๊ทธ๋ ์ง ์์ผ๋ฉด ์ปค์คํ
๋ฆฌํฌํฐ์์ ์ด ๊ธฐ๋ฅ์ ๊ตฌํํ๊ธฐ ์ํด ์ธ๊ณ๋ฅผ ๋ณต์ฌํ์ฌ ๋ถ์ฌ๋ฃ์ด์ผ ํฉ๋๋ค.
๋ด ํ ์คํธ ์ถ๋ ฅ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
https://github.com/facebook/flow/issues/4673 ์ผ๋ก ์ธํด ๊ฒฝ๊ณ ๋ฅผ ์ ๊ฑฐํ ์ ์์ผ๋ฉฐ ๋คํํ ๋ช ๊ฐ์ง ๋ก๊ทธ ๋ฉ์์ง๋ง ์์ง๋ง ๋ ๋ง์ ๋ก๊น ์ ์ถ๊ฐํ๋ ค๋ฉด ํจ์ฌ ๋ ๋๋น ์ง ๊ฒ์ ๋๋ค. .
๋๋ @miracle2k๋ฅผ ๋ ๋ฒ์งธ๋ก, ์์กด์ฑ์์ ๋ง์ ๊ฒฝ๊ณ ์ ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ฉด ์คํจํ ํ ์คํธ๋ฅผ ์ฐพ๊ธฐ๊ฐ ํจ์ฌ ๋ ์ด๋ ค์์ง๋๋ค. ์คํจํ ํ ์คํธ ๋ชฉ๋ก๋ง ๋ฐํํ๋ ํต๊ณผํ ์ ์๋ ํ๋๊ทธ๊ฐ ์์ผ๋ฉด ์ข์ ๊ฒ์ ๋๋ค.
๋์ํฉ๋๋ค. PASS ํ ์คํธ์ ๋ํ ์ฝ์ ์ถ๋ ฅ์ ์จ๊ธฐ๊ณ FAILED ํ ์คํธ๋ฅผ ์ํด ๋จ๊ฒจ๋๋ aa ํ๋๊ทธ๊ฐ ์์ผ๋ฉด ํ ์คํธ ์ถ๋ ฅ์ ๋ ์ฝ๊ธฐ ์ฝ๊ฒ ๋ง๋ค ์ ์์ต๋๋ค.
๋์ํฉ๋๋ค. ์ ๋ ํ์ฌ ๋๊ท๋ชจ ํ ์คํธ ๊ทธ๋ฃน์ด ์๋ ํ๋ก์ ํธ์์ ์์ ์ค์ด๋ฉฐ ํ ์คํธ ํต๊ณผ ๊ฒฐ๊ณผ๋ก ์ธํด ๋๋ฒ๊น ํ ๋ ์ํฌํ๋ก๊ฐ ๋ ์ด๋ ค์์ง๋๋ค.
PASS ํ ์คํธ์ ๋ํ ์ฝ์ ์ถ๋ ฅ์ ์จ๊ธฐ๋ ํ๋๊ทธ์ ๋์ํ์ต๋๋ค.
PASS __tests__/my_test.js (hidden output)
ํน์๋ผ๋ ์ด ์ถ๊ฐ ์ฌํญ์ ์ฌ๊ณ ํ ์ ์์ต๋๊น?
์ด์ ์ด ์ฌ์ฉ ์ฌ๋ก๋ฅผ ๋ค๋ฃจ์ด์ผ ํ๋ ์คํจํ ํ ์คํธ๋ฅผ ์คํํ ์ ์๋ ๋ฐฉ๋ฒ์ด ์์ต๋๋ค. #4886 ์ฐธ์กฐ(jest 22์์ ์ฌ์ฉ ๊ฐ๋ฅ)
์ด์ ์ด ์ฌ์ฉ ์ฌ๋ก๋ฅผ ๋ค๋ฃจ์ด์ผ ํ๋ ์คํจํ ํ ์คํธ๋ฅผ ์คํํ ์ ์๋ ๋ฐฉ๋ฒ์ด ์์ต๋๋ค.
์ผ์ด์ค๋ฅผ ๋ถ๋ถ์ ์ผ๋ก๋ง ๋ค๋ฃน๋๋ค. ์๋ฅผ ๋ค์ด, ๋ก๊น ์ด ๋ง์ ์ ํ๊ตฐ์์ 100๊ฐ ํ ์คํธ ์ค 5๊ฐ๊ฐ ์คํจํ๋ฉด ์ฝ์ ์ถ๋ ฅ์ ์ดํดํ๊ธฐ ์ํด ์คํจํ ํ ์คํธ๋ง ๋ค์ ์คํํ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ํ ์คํธ๋ฅผ ํต๊ณผํ๊ธฐ ์ํด ๋ก๊น ์ ์จ๊ธฐ๊ณ ์์๋ค๋ฉด ํ ์คํธ๋ฅผ ๋ค์ ์คํํ ํ์๊ฐ ์์์ ๊ฒ์ ๋๋ค.
๋ํ ์คํจํ ํ ์คํธ๋ง ๋ค์ ์คํํ๋ฉด ์ฝ๋ ํธ์ง์ผ๋ก ์ธํ ์๋ก์ด ํ ์คํธ ์คํจ๋ฅผ ํฌ์ฐฉํ์ง ๋ชปํ๋ค๋ ๋จ์ ์ด ์์ต๋๋ค.
ํต์ฌ ํ์ด ์ด ๊ธฐ๋ฅ์ ๊ตฌํํ๊ธฐ๋ฅผ ์ํ์ง ์๋๋ค๋ฉด ๋๊ตฐ๊ฐ ์ ์ ์ ์ ํํ์ ๋ํด ๊ณ ๋ คํด ์ฃผ์๊ฒ ์ต๋๊น? ์ด ์ ์์ ํตํด ์ฝ์ ์จ๊ธฐ๊ธฐ๋ฅผ ๊ตฌํํ๋ ์ฌ์ฉ์ ์ง์ ๋ฆฌํฌํฐ๋ฅผ ๋ ์ฝ๊ฒ ์์ฑํ ์ ์์ต๋๋ค. ํจ์น๋ฅผ ๋ง๋ค ์๋ ์์ง๋ง ์๋ฝ๋์ง ์์ผ๋ฉด ํ ๋ฆฌํ์คํธ๋ฅผ ์ ์ถํ๊ณ ์ถ์ง ์์ต๋๋ค.
@kumar303 PR์ ๋ณด๋ด์ฃผ์ธ์. ์ ์ง ๊ด๋ฆฌ๊ฐ ์๋นํ ๋ณต์กํ์ง ์์ ๊ฒ ๊ฐ์ต๋๋ค. :)
@kumar303 ๊ฒฐ๊ตญ PR์ ์ ์ถํ์ จ๋์? ์ด๊ฒ๋ ๊ฐ๊ณ ์ถ์ต๋๋ค.
๋๋ ์ฌ์ ํ ํ๋๋ฅผ ์ ์ถํ๋ ค๊ณ ํ์ง๋ง ๋ค๋ฅธ ์์ ์ฐ์ ์์ ์ฌ์ด์ ์๊ฐ์ ์ฐพ์ ์ ์์ต๋๋ค. ๋ค๋ฅธ ์ฌ๋์ด ์ ๋ฅผ ๋ฅ๊ฐํ๋ ๊ฒฝ์ฐ ํ ์คํธ๋ฅผ ๋์ธ ์ ์๋๋ก ์๋ ค์ฃผ์ธ์!
์ ์์ด๋์ด๋ ์ปค์คํ
๋ฆฌํฌํฐ ๊ฐ ํ์ฅํ ์ ์๋๋ก jest.js ์์ DefaultReporter
๋ฅผ ๋ด๋ณด๋ด๋ ๊ฒ์ด ์ด ์ค ์ ๋ค์๊ณผ ๊ฐ์ด ๋ณ๊ฒฝํ์ฌ ์์ํ๋ ค๊ณ ์๊ฐํ์ต๋๋ค.
const testFailed = result.numFailingTests > 0;
if (testFailed && consoleBuffer && consoleBuffer.length) {
// Log console output
}
๊ทธ ํ์ ๋ ๋ง์ ์กฐ์ ์ด ํ์ํ ๊ฒ์ด๋ผ๊ณ ํ์ ํฉ๋๋ค.
@kumar303 ๋ด ํ๋ ค๋ฉด ์ด๋ป๊ฒ ํด์ผ ํ๋์?
์ ๋ ์ด๊ฒ์ ๊ด์ฌ์ด ์์ต๋๋ค. @kumar303 ์ ์์ด๋์ด์ ๋ฐ๋ผ default_reporter
์ฝ๊ฒ ํ์ฅํ๋ ์ฌ์ฉ์ ์ง์ ๋ฆฌํฌํฐ๋ฅผ ์์ฑํ ์ ์์์ต๋๋ค( jest-cli/build/reporters/default_reporter
์์ ์ง์ ๊ฐ์ ธ์ค๊ธฐ ๋๋ฌธ์ ๋ถ์์ง๊ธฐ ์ฝ์ง๋ง). ๊ทธ๋ฐ ๋ค์ result.console
๋ด๊ฐ ๋ณด๊ธฐ์ ์ ํฉํ
ํ ๊ฐ์ง๋ฅผ ์ ์ธํ๊ณ ๋ ์ ์๋ํฉ๋๋ค. ๋จ์ผ ํ ์คํธ๋ฅผ ์คํํ ๋ ์ฝ์ ๋ฉ์์ง๊ฐ ๋ฒํผ๋ง๋์ง ์์ต๋๋ค. ์ด๊ฒ์ ์ฌ๊ธฐ์ ์ธ๊ธ๋์ด ์์ต๋๋ค: https://github.com/facebook/jest/issues/2080
๋ฐ๋ผ์ ์ด๋ฌํ ์๋๋ฆฌ์ค์์๋ ์ฌ์ฉ์ ์ง์ ๋ฆฌํฌํฐ ๋ด์์ ์ฝ์ ์ถ๋ ฅ์ ์ํฅ์ ์ค ์ ์๋ ๊ธฐ๋ฅ์ด ์์ต๋๋ค. ๋ฐ๋ผ์ jest๊ฐ ์ฝ์ ์ถ๋ ฅ์ ํญ์ ๋ฒํผ๋งํ๋๋ก ๊ฐ์ ํ ์ ์๋ ๋ฐฉ๋ฒ์ด ์๋ ํ ์ฝ์ ์ถ๋ ฅ์ ๊ด๋ฆฌํ๊ธฐ ์ํด ์ฌ์ฉ์ ์ ์ ๋ฆฌํฌํฐ๋ฅผ ์ฌ์ฉ
๊ธฐ๋ณธ ๋ฆฌํฌํฐ๋ฅผ ๋ณด๋ค ๊น๋ํ๊ฒ ๊ณต๊ฐํ๊ฒ ๋์ด ๊ธฐ์ฉ๋๋ค.
๊ฐ์ ๋ฒํผ๋ง console.logs์ ๋ํ ๋ณ๋์ ๋ฌธ์ ๋ฅผ ์ฌ๋ ๊ฒ์ด ์ด๋ป์ต๋๊น? ์ผ๊ด์ฑ์ด ์์ด์ผ ํจ
showLogsForFailedTests: true
์ ๊ฐ์ ์ ์ญ ๊ตฌ์ฑ ๋ณ์๋ฅผ ์ฌ์ฉํ๋ ๋ฐ ์ค์ํ ๋จ์ ์ด ์์ต๋๊น? ๊ธฐ๋ณธ๊ฐ์ Jest๊ฐ ํ์ฌ ์๋ํ๋ ๋ฐฉ์์์ ์๋ฌด ๊ฒ๋ ๋ณ๊ฒฝ๋์ง ์์ผ๋ฉฐ false
๊ฐ์ ํ
์คํธ๋ฅผ ํจ์ฌ ๋ ์ฆ๊ฒ๊ฒ ์ฝ์ ์ ์์ต๋๋ค.
์ด ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋์๊ธฐ ๋๋ฌธ์ ์ข ๋ฃ๋ ๊ฒ์ ๋๊น? ์๋๋ฉด 30๋ช ์ด์์ ์ฌ๋๋ค์ด ์ค์ ๋ก๋ ๊ฐ๊ณ ์์ง ์์ Jest์ ๋ฌธ์ ๊ฐ ์๋ค๊ณ ์์ํ๊ธฐ ๋๋ฌธ์ ์ข ๋ฃ๋ ๊ฒ์ ๋๊น?
์๋ , ๋๋ ์ด๊ฒ์ด ๋๋ด์ ๋ํ ์คํจํ ๋ก๊ทธ ๋ง ํ์ํ๋ ํ์ค ์ ๊ทผ ๋ฐฉ์์ด๋ผ๊ณ ์๊ฐํ์ต๋๋ค ... ์ด๊ฒ์ด ์ฌ์ ํ ๋ฌธ์ ์ ๋๊น?
์ด๊ฒ ํ์ํด. ์ ๋ง ๋ฐฉํด๊ฐ ๋ฉ๋๋ค.
์ฐธ๊ณ : Jest์ ๊ธฐ๋ณธ ๋ฆฌํฌํฐ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ ์ปค์คํ ๋ฆฌํฌํฐ์์ @kumar303 ์ ์์ด๋์ด๋ฅผ ์ฑ๊ณต์ ์ผ๋ก ๊ตฌํํ์ต๋๋ค . js
@willdurand ๊ธฐ์๋ ์ ์ํํด
Test Suites: 48 passed, 48 total
Tests: 78 passed, 78 total
Snapshots: 73 passed, 73 total
ํ ์คํธ ์ค ๋ชจ๋ ๋ก๊ทธ๊ฐ ๊ณ์ ํ์๋์์ต๋๋ค.
์๋ง๋ ๋จ์ผ ํ
์คํธ๋ฅผ ์ํด ์คํํ์ต๋๊น? ๋ด ์ด์ ๋๊ธ์ ์ฐธ์กฐํ๊ณ
๊ด๋ จ ๋ฒ๊ทธ ๋ณด๊ณ ์. ๋ฆฌํฌํฐ๋ก ๋ก๊ทธ๋ฅผ ์บก์ฒํ ์ ์์ต๋๋ค.
ํ๋์ ํ
์คํธ๋ง ์คํ๋ ๋ ์ด๊ฒ์ด ์ง์ง ๋ฌธ์ ์
๋๋ค.
2018๋ 8์ 8์ผ ์์์ผ ์คํ 7:08 jazoom [email protected]์์ ๋ค์๊ณผ ๊ฐ์ด ์์ฑํ์ต๋๋ค.
@willdurand https://github.com/willdurand ๊ธฐ์๋์ ์ํํด ๋ณด์์ต๋๋ค. ๋๋
๋ด๊ฐ ํ ๋ชจ๋ ๊ฒ์ด ํด๋น ํ์ผ์ ์ ํํ๊ธฐ ๋๋ฌธ์ ๋ด๊ฐ ๋ฌด์์ ์๋ชปํ์ ์ ์๋์ง ํ์คํ์ง ์์ต๋๋ค.
๊ธฐ์๋ก. ์ด๊ฒ์ด ๋ง์ง๋ง์ ํ์๋์ง ์๋๋ก ๋ฐฉ์งํ ๊ฒ๋ฟ์ ๋๋ค.
ํ ์คํธ:ํ ์คํธ ์ค์ํธ: 48๊ฐ ํต๊ณผ, ์ด 48๊ฐ
ํ ์คํธ: 78๊ฐ ํต๊ณผ, ์ด 78๊ฐ
์ค๋ ์ท: 73๊ฐ ํต๊ณผ, ์ด 73๊ฐํ ์คํธ ์ค ๋ชจ๋ ๋ก๊ทธ๊ฐ ๊ณ์ ํ์๋์์ต๋๋ค.
โ
์ด ์ค๋ ๋์ ๊ฐ์ ํ๊ธฐ ๋๋ฌธ์ ์ด ๋ฉ์์ง๋ฅผ ๋ฐ๊ณ ์์ต๋๋ค.
์ด ์ด๋ฉ์ผ์ ์ง์ ๋ต์ฅํ๊ณ GitHub์์ ํ์ธํ์ธ์.
https://github.com/facebook/jest/issues/4156#issuecomment-411582223 ๋๋ ์์๊ฑฐ
์ค๋ ๋
https://github.com/notifications/unsubscribe-auth/AAi-gO9_uEJPO4xnhkpfGore_hEX81fUks5uO29bgaJpZM4OnBQQ
.
@jamietre 48๊ฐ์ ์ค์ํธ๋ฅผ ์คํํ ํ ์คํธ์ ์ฌ์ฉํ ๊ฒ๊ณผ ๋๊ฐ์ ๋ช ๋ น์ ๋ํด ์คํํ์ต๋๋ค.
ํธ์ง: ๋ช ํํ ํ๊ธฐ ์ํด ๋์ผํ ๋ช ๋ น์ ๋ ๋ฒ ์คํํ์ต๋๋ค. ์ปค์คํ ๋ฆฌํฌํฐ์์ ์ ์ผํ ์ฐจ์ด์ ์ ๋ง์ง๋ง์ ์ด ์์ฝ์ ์ธ์ํ์ง ์์๋ค๋ ๊ฒ์ ๋๋ค.
Test Suites: 48 passed, 48 total
Tests: 78 passed, 78 total
Snapshots: 73 passed, 73 total
@jazoom ๋ฆฌํฌํฐ๋ ๊ตฌ์ฑ์ verbose: true
๊ฐ ์์ผ๋ฉด ์๋ฌด๋ฐ ํจ๊ณผ๊ฐ ์์ต๋๋ค. false
์ค์ ํด ๋ณด์ญ์์ค.
@jamietre ๋์ํฉ๋๋ค. ๋จ์ผ ํ ์คํธ ์คํ์ด ์ฝ์ ์ถ๋ ฅ์ ์บก์ฒํ๊ฑฐ๋ ํ์ํ์ง ์๋ ๊ฒ์ ์ด์ํ ๋์์ ๋๋ค(https://github.com/facebook/jest/issues/6441).
jest๊ฐ ํ ์คํธ๋ณ๋ก ์ฝ์ ์ถ๋ ฅ์ ๊ทธ๋ฃนํํ์ง ์๋ ๋ฐฉ๋ฒ๋ ๋์์ด ๋์ง ์์ต๋๋ค(https://github.com/facebook/jest/issues/2080). ์ฌ์ฉ์ ์ง์ ๋ฆฌํฌํฐ๋ ํน์ ์คํจ ํ ์คํธ๊ฐ ์๋ ์ ํ๊ตฐ(์: ํ ์คํธ ํ์ผ)์ ๋ํ ์ถ๋ ฅ๋ง ํ์ํ ์ ์์ต๋๋ค.
@jazoom ์ ๋ํ ๋ฆฌํฌํฐ๋ฅผ ์ค์นํ๊ฑฐ๋ ๋ณ๊ฒฝํ ํ
@kumar303 ์ฅํฉํ๊ฒ ์ค์ ๋์ด ์์ง ์์ต๋๋ค
"์์ ํ ๋ค์ ์์"์ด๋ ๋ฌด์์ ์๋ฏธํฉ๋๊น? ์คํ๋๋ ์คํฌ๋ฆฝํธ์ผ ๋ฟ์ ๋๋ค.
"์์ ํ ๋ค์ ์์"์ด๋ ๋ฌด์์ ์๋ฏธํฉ๋๊น?
๋๋ ๋น์ ์ด ๋๋ด์ ๊ฐ์ ๋ชจ๋์ ์๋ค๋ฉด ๋น์ ์ด ์ข ๋ฃํด์ผ ํ๋ค๋ ๊ฒ์ ์๋ฏธํ์ต๋๋ค.
๊ด์ฐฎ์. ์ ๋ ์๊ณ ๋ชจ๋๋ฅผ ์ฌ์ฉํ์ง ์์ต๋๋ค.
์ ์, ๊ทธ๋ ์ต๋๋ค. ๋๋ ๊ทธ๊ฒ์ ๋์น ์ฑ์ง ๋ชปํ์ง๋ง ์ด๋ค ์ด์ ๋ก Jest๋ ๋ชจ๋ ํ ์คํธ ์ค์ํธ๊ฐ ์คํ๋๋ฉด ๋งจ ์๋์ ์ต์ข ์์ฝ์ ์ถ๋ ฅํ์ง ์์ต๋๋ค.
์๋ง๋ SummaryReporter
์๋๋ผ DefaultReporter
ํ์ฅํ๊ธฐ ๋๋ฌธ์ธ ๊ฒ ๊ฐ์ต๋๋ค.
@willdurand ๋ก๊ทธ๋ฅผ ์ฑ๊ณต์ ์ผ๋ก ์จ๊ธฐ๋ ๊ตฌ์ฑ์ ์๋ํ์ต๋๋ค. ๊ทธ๋ฌ๋ ํฐ๋ฏธ๋์ ๋ ์ด์ ์ง์์ง์ง ์์ผ๋ฉฐ(์ด์ ๋ก๊ทธ) ๋ชจ๋ ๋ก๊ทธ๋ ๋ค๋ฅธ ๋ก๊ทธ ์๋์ ์์ ๋๋ค.
์ฐธ๊ณ : DefaultReporter
ํด๋์ค๋ฅผ ๋ด๋ณด๋ด๊ธฐ๋ง ํ๋ฉด ๊ธฐ๋ณธ ๋ก๊น
์ผ๋ก ๋์๊ฐ์ง๋ง ๋ก๊ทธ๋ ์คํ๋ฉ๋๋ค.
@kumar303 / @willdurand์ FingersCrossedReporter๋ก ์ฝ๊ฐ ๋์์ต๋๋ค.
๊ทธ๋ฌ๋ ๋ค๋ฅธ ์ฌ๋๋ค์ด ์ธ๊ธํ๋ฏ์ด ํ
์คํธ๊ฐ ๋๋ ๋ ํ
์คํธ ์์ฝ์ ์ธ์ํ์ง ์์ต๋๋ค. ์ด๊ฒ์ (๋ด ์๊ฐ์) ๊ธฐ๋ณธ Jest ์ค์ ์ด DefaultReporter์ SummaryReporter๋ผ๋ ๋ ๊ฐ์ ๋ฆฌํฌํฐ๋ฅผ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์
๋๋ค.
์ด์ ๋ด jest-configuration์์ SummaryReporter๋ฅผ ์ง์ ๊ฐ์ ธ์ฌ ์ ์์ต๋๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก ๋ด๋ณด๋ด์ง๊ณ ๊ฐ์ ธ์ฌ ์ ์๋ ๊ฒ ๊ฐ์ต๋๋ค. ๋ค๋ฅธ ํ์ผ์์ ๋ค์ ๋ด๋ณด๋ด์ ํด๊ฒฐํ์ต๋๋ค.
//summary-reporter.js
const SummaryReporter = require('@jest/reporters/build/summary_reporter')
.default;
module.exports = SummaryReporter;
//log-on-fail-reporter.js
Content: https://gist.github.com/GeeWee/71db0d9911b4a087e4b2486386168b05
Same as reporter above, but with updated import paths for the new jest structure
๋๋ด ๊ตฌ์ฑ
"reporters": [
"<rootDir>/src/test-reporters/log-on-fail-reporter.js",
"<rootDir>/src/test-reporters/summary-reporter.js"
],
ํธ์ง: ์กฐ๊ธ ๊ฐ์ง๊ณ ๋๊ณ ๋๋ฉด ๋จ์ผ ํ ์คํธ๊ฐ ์คํจํ๋๋ผ๋ ์ ์ฒด ์ค๋ช ๋ธ๋ก์ ๋ํด ์ด ๋ก๊ทธ๊ฐ ๊ธฐ๋ก๋๋ค๋ ๊ฒ์ ์ ์ ์์ต๋๋ค.
jest 25์ ๊ธฐ๋ณธ ๋ด๋ณด๋ด๊ธฐ ์ง์์ ์์ ํฉ๋๋ค.
๋น์ ์ ๋ํ ํ ์ ์์ต๋๋ค
//summary-reporter.js
const {SummaryReporter} = require('@jest/reporters')
module.exports = SummaryReporter;
ํ์ง๋ง @jest/reporters/SummaryReporter
๋ฑ์ ํ์ผ์ ์ถ๊ฐํ ์ ์์ผ๋ฏ๋ก ์ค๊ฐ js ํ์ผ์ด ํ์ํ์ง ์์ต๋๋ค... ์ด์ ๋ํ ๋ณ๋์ ๊ธฐ๋ฅ ์์ฒญ์ ์ด๊ณ ์ถ์ต๋๊น?
์ด ๊ธฐ๋ฅ ์์ฒญ์ด ์ข
๋ฃ๋ ์ด์ ๋ ๋ฌด์์
๋๊น?
๋ง์ ์ฌ๋๋ค์ด ์ด ๊ธฐ๋ฅ์ ์ฆ์ ์ฌ์ฉํ ์ ์๋ ๋๋ด์ ํฌํจ์ํค๋ ๊ฒ์ด ํฉ๋ฆฌ์ ์ด๋ผ๊ณ ์๊ฐํ๋ ๊ฒ ๊ฐ์ต๋๋ค. ์ ์ด๋ ๊ตฌ์ฑ ์ต์
์ผ๋ก.
@kumar303 ๋ค์ ์ด์ด์ฃผ์ค ์ ์๋์?
@kumar303 ๋ค์ ์ด์ด์ฃผ์ค ์ ์๋์?
ํค. ์๋์, ์ก์ธ์ค ๊ถํ์ด ์์ต๋๋ค. ์ด๊ฒ์ด ํ์์ ๊ทผ๊ฑฐ์์ต๋๋ค. https://github.com/facebook/jest/issues/4156#issuecomment -324638718 ๋๋ ์ด๊ฒ์ด ํ์์ ์ธ ๊ธฐ๋ฅ์ด๋ผ๋ ๋ฐ ๋์ํฉ๋๋ค. ํต์ฌ jest devs๊ฐ ๊ทธ๊ฒ ์์ด ์ด๋ป๊ฒ ์ด ์ ์๋์ง ๋๋์ง๋ง ๋ฒ๊ทธ๊ฐ ์๋ ์ฝ๋๋ฅผ ์์ฑํ์ง ์์ ๋ก๊ทธ๊ฐ ํ์ํ์ง ์์ ์ ์์ต๋๋ค.
๋ค์ ์ด์ด์ฃผ์ธ์. ์ด๊ฒ๋ ํ์ํฉ๋๋ค.
์ด๊ฒ์ด ์์ง ๊ฐ๋ฅํ์ง ์์ ์ด์ ๋ ๋ฌด์์ ๋๊น?
์๊ฐ๋ณด๋ค ๊ธฐ๋ฅ์ด ์๋ ๊ฒ ๊ฐ์ต๋๋ค. ๋๋ถ๋ถ์ ํ ์คํธ๋ ๊ฐ๊ฐ ์ต์ ํ ํ์ด์ง์ ์ฝ์ ํ ์คํธ๋ฅผ ์์ฑํฉ๋๋ค. ์คํจํ ํ ์คํธ๋ฅผ ์ฐพ๊ธฐ ์ํด ์ด๋ฅผ ํค๋งค๋ ๊ฒ์ ๋งค์ฐ ์ฑ๊ฐ์ ์ผ์ ๋๋ค.
๋๊ธ์ ๋จ๊ธฐ๋ ๊ฒ ์ธ์๋ ์ด ํ๋์ ๋ํ ์ง์ง๋ฅผ ๋ฑ๋กํ ์ ์๋ ๋ค๋ฅธ ๋ฐฉ๋ฒ์ด ์์ต๋๋ค. ๐ ๋ฑ์ ๋ ์ ์ฉํ๋ค๋ ๊ฒ์ ์๊ณ ์์ผ๋ฏ๋ก ์ด๊ฒ์ด ๋ด๊ฐ ํ ์์๋ ์ต์ ์ ๋๋ค. ๊ด๋ จ๋ ๋ชจ๋ ๋ถ๋ค๊ป ๊ฐ์ฌ๋๋ฆฝ๋๋ค! ๋๋ ๋ชจ๋ ์ค๋ ๋๋ฅผ ๋ฐ๋๊ณ ์ฌ๋๋ค์ด ์ํ๋ ๋กค์ ์ป์ ์ ์๋ ์ฃผ๊ธฐ๊ฐ ์์ ๋๋ง๋ค ์ด๊ฒ์ ๊ธฐ๋ํ๊ณ ์์ต๋๋ค.
์ด ๊ธฐ๋ฅ์ด ๊ฑฐ์ 3๋ ๋์ ๊ตฌํ๋์ง ์์๋ค๋ ์ฌ์ค์ด ์ด๊ฒ์ด ํ์ํ๋ฐ๋ ์ข ์ด์ํฉ๋๋ค.
์ธํฐ๋ท์์ ์ฐพ์ ์ค๋ํซ์ ๊ธฐ๋ฐ์ผ๋ก ์ด์ ๋ํ ์ ์ญ ๊ตฌ์ฑ์ ์๊ฐํด ๋์ต๋๋ค. https://stackoverflow.com/questions/58936650/javascript-jest-how-to-show-logs-from-test-case-only-when-test-fails/61909588#61909588 ์ฐธ์กฐ
์ด๊ฒ์ด ๋๊ตฐ๊ฐ๋ฅผ ๋๊ธฐ๋ฅผ ๋ฐ๋๋๋ค.
๋น๋๊ธฐ ์บก์ฒ๋ฅผ ์ํด https://github.com/AtakamaLLC/capio ๋ฅผ ์ดํด๋ณด๊ณ ์ถ์ ์๋ ์์ต๋๋ค.
๋ค์ ์ด์ด ์ ํ์ ๊ตฌ์ฑ์ผ๋ก ๊ตฌํํ์ญ์์ค.
PR์ ๋ฐ์ ์ ์๋ ํ์ค์ ์ธ ๊ธฐํ๊ฐ ์๋ค๋ฉด ์ง์ ํ๊ณ ์ถ์ต๋๋ค.
๋ด ์๊ฐ์ ์ด "์์" ๊ธฐ๋ฅ ์์ฒญ์ ๋ํ ์ฌ์ฉ์ ์ง์ ๋ฆฌํฌํฐ๋ฅผ ์์ฑํ๋ ๊ฒ์ ์ง์ ๋ถ๊ฐ๋ฅํ ์ ์ง ๊ด๋ฆฌ ์ค๋ฒํค๋๊ฐ ๋ ๊ฒ์
๋๋ค.
์ด ๊ธฐ๋ฅ ์์ฒญ์ "๊นจ๋ํ" ๊ฒ๋ "์ผ๊ด๋" ๊ฒ๋ ์๋์ง๋ง ์ฌ์ ํ ๋ง์ ์ฌ๋๋ค์๊ฒ ๋งค์ฐ ํ์ํฉ๋๋ค.
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
๋์ํฉ๋๋ค. PASS ํ ์คํธ์ ๋ํ ์ฝ์ ์ถ๋ ฅ์ ์จ๊ธฐ๊ณ FAILED ํ ์คํธ๋ฅผ ์ํด ๋จ๊ฒจ๋๋ aa ํ๋๊ทธ๊ฐ ์์ผ๋ฉด ํ ์คํธ ์ถ๋ ฅ์ ๋ ์ฝ๊ธฐ ์ฝ๊ฒ ๋ง๋ค ์ ์์ต๋๋ค.