Jest: [BUG] Jest 16은 인수 없이 호좜된 ν•¨μˆ˜λ₯Ό ν…ŒμŠ€νŠΈν•˜κΈ° μœ„ν•΄ 0개의 μΈμˆ˜μ™€ ν•¨κ»˜ `toHaveBeenCalledWith`λ₯Ό μ‚¬μš©ν•˜μ—¬ μ€‘λ‹¨λ©λ‹ˆλ‹€.

에 λ§Œλ“  2016λ…„ 10μ›” 09일  Β·  3μ½”λ©˜νŠΈ  Β·  좜처: facebook/jest

_κΈ°λŠ₯_을 μš”μ²­ν•˜μ‹œκ² μŠ΅λ‹ˆκΉŒ? μ•„λ‹ˆλ©΄ _버그_λ₯Ό λ³΄κ³ ν•˜μ‹œκ² μŠ΅λ‹ˆκΉŒ?

버그 μ‹ κ³ 

ν˜„μž¬ 행동은 λ¬΄μ—‡μž…λ‹ˆκΉŒ?

Jest 16μ—μ„œ: 0개의 인수둜 μŠ€νŒŒμ΄κ°€ 호좜될 λ•Œ 0개의 인수둜 toHaveBeenCalledWith ν…ŒμŠ€νŠΈλŠ” ν†΅κ³Όν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

Jest 15μ—μ„œ: 0개의 인수둜 μŠ€νŒŒμ΄κ°€ 호좜될 λ•Œ 0개의 인수둜 toHaveBeenCalledWith ν…ŒμŠ€νŠΈ 톡과

ν˜„μž¬ λ™μž‘μ΄ 버그인 경우 μž¬ν˜„ν•˜λŠ” 단계λ₯Ό μ œκ³΅ν•˜κ³  κ°€λŠ₯ν•œ 경우 npm install 및 npm test ν•  수 μžˆλŠ” GitHub의 μ΅œμ†Œ μ €μž₯μ†Œλ₯Ό μ œκ³΅ν•˜μ‹­μ‹œμ˜€.

μ΅œμ†Œ ν…ŒμŠ€νŠΈ:

it('can check that a function is called without arguments', () => {
    let fn = jasmine.createSpy();

    fn();
    expect(fn).toHaveBeenCalledWith();
});

레포: https://github.com/benmccormick/jest-no-args/tree/master

μ˜ˆμƒλ˜λŠ” λ™μž‘μ€ λ¬΄μ—‡μž…λ‹ˆκΉŒ?

0개의 인수둜 toHaveBeenCalledWith λ₯Ό μ‚¬μš©ν•˜μ—¬ ν…ŒμŠ€νŠΈν•˜λŠ” ν…ŒμŠ€νŠΈλŠ” 0개의 인수둜 μŠ€νŒŒμ΄κ°€ 호좜될 λ•Œ μ–΄μ„€μ…˜μ„ 전달해야 ν•©λ‹ˆλ‹€.

--debug 둜 Jestλ₯Ό λ‹€μ‹œ μ‹€ν–‰ν•˜κ³  인쇄할 전체 ꡬ성을 μ œκ³΅ν•©λ‹ˆλ‹€.

> node_modules/.bin/jest --debug                               
jest version = 16.0.1
test framework = jasmine2
config = {
  "rootDir": "/Users/ben/Code/experiments/jest-no-args",
  "name": "-Users-ben-Code-experiments-jest-no-args",
  "setupFiles": [],
  "testRunner": "/Users/ben/Code/experiments/jest-no-args/node_modules/jest-jasmine2/build/index.js",
  "scriptPreprocessor": "/Users/ben/Code/experiments/jest-no-args/node_modules/babel-jest/build/index.js",
  "usesBabelJest": true,
  "automock": false,
  "bail": false,
  "browser": false,
  "cacheDirectory": "/var/folders/wy/1r3js80s60q497r_lrjyb0bh0000gn/T/jest",
  "clearMocks": false,
  "coveragePathIgnorePatterns": [
    "/node_modules/"
  ],
  "coverageReporters": [
    "json",
    "text",
    "lcov",
    "clover"
  ],
  "globals": {},
  "haste": {
    "providesModuleNodeModules": []
  },
  "mocksPattern": "__mocks__",
  "moduleDirectories": [
    "node_modules"
  ],
  "moduleFileExtensions": [
    "js",
    "json",
    "jsx",
    "node"
  ],
  "moduleNameMapper": {},
  "modulePathIgnorePatterns": [],
  "noStackTrace": false,
  "notify": false,
  "preset": null,
  "preprocessorIgnorePatterns": [
    "/node_modules/"
  ],
  "resetModules": false,
  "testEnvironment": "jest-environment-jsdom",
  "testPathDirs": [
    "/Users/ben/Code/experiments/jest-no-args"
  ],
  "testPathIgnorePatterns": [
    "/node_modules/"
  ],
  "testRegex": "(/__tests__/.*|\\.(test|spec))\\.jsx?$",
  "testURL": "about:blank",
  "timers": "real",
  "useStderr": false,
  "verbose": null,
  "watch": false,
  "cache": true,
  "watchman": true,
  "testcheckOptions": {
    "times": 100,
    "maxSize": 200
  }
}
 FAIL  __tests__/test.js
  ● can check that a function is called without arguments

    expect(spy).toHaveBeenCalledWith(expected)

    Expected spy to have been called with:
      [undefined]
    But it was called with:
      Array []

      at Object.<anonymous>.it (__tests__/test.js:6:16)
      at process._tickCallback (internal/process/next_tick.js:103:7)

  βœ• can check that a function is called without arguments (5ms)

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

λ…Έλ“œ 버전: 6.7.0
NPM 버전: 3.10.7

κ°€μž₯ μœ μš©ν•œ λŒ“κΈ€

'toHaveBeenCalled'λŠ” ν•¨μˆ˜κ°€ μ „ν˜€ ν˜ΈμΆœλ˜μ—ˆλŠ”μ§€ ν™•μΈν•©λ‹ˆλ‹€. 인수 없이 호좜된 ν•¨μˆ˜λ₯Ό ꡬ체적으둜 ν…ŒμŠ€νŠΈν•˜λŠ” ν…ŒμŠ€νŠΈκ°€ μžˆμŠ΅λ‹ˆλ‹€.

μ‹€μ œ μ‚¬μš© 사둀: 이 ν•¨μˆ˜λŠ” λͺ©λ‘μ—μ„œ μž‘λ™ν•˜λ©° idλ₯Ό μ·¨ν•˜κ±°λ‚˜(단일 ν•­λͺ©μ— λŒ€ν•΄ μž‘λ™) id 없이 호좜되고(전체 λͺ©λ‘μ—μ„œ μž‘λ™ν•¨)

λͺ¨λ“  3 λŒ“κΈ€

μ’‹μ•„, 쑰금 후에 μž μˆ˜ν–ˆλ‹€. 맀처 자체( /Users/ben/Code/experiments/jest/packages/jest-matchers/src/spyMatchers.js 에 μ •μ˜λ¨)λŠ” μΈμˆ˜κ°€ ν•¨μˆ˜μ— μ „λ‹¬λ˜μ§€ μ•Šμ„ λ•Œ 두 번째 "μ •μ˜λ˜μ§€ μ•Šμ€" 인수둜 μ „λ‹¬λ©λ‹ˆλ‹€. λ”°λΌμ„œ λ¬Έμ œλŠ” μ•„λ§ˆλ„ 더 κΉŠμ„ κ²ƒμž…λ‹ˆλ‹€(μΈμˆ˜κ°€ μ—†λŠ” 것과 λͺ…μ‹œμ μœΌλ‘œ undefinedλ₯Ό μ „λ‹¬ν•˜λŠ” 것을 κ΅¬λ³„ν•˜λ €λŠ” 것 κ°™μŠ΅λ‹ˆλ‹€).

인수 전달이 μ–΄λ””μ—μ„œ λ°œμƒν•˜λŠ”μ§€ 아직 ν™•μ‹€ν•˜μ§€ μ•Šμ§€λ§Œ κ°€λŠ₯ν•œ 경우 νŒŒμ•…ν•˜κ³  PR을 μ—΄λ €κ³  λ…Έλ ₯ν•  κ²ƒμž…λ‹ˆλ‹€.

μ—…λ°μ΄νŠΈ: 이 문제λ₯Ό μΆ”μ ν•˜λ €λ©΄ 도움이 ν•„μš”ν•  것 κ°™μŠ΅λ‹ˆλ‹€. 이 λ§ˆμ§€λ§‰ 릴리슀 λ™μ•ˆ 이 맀처둜 μΆ©λΆ„νžˆ λ³€κ²½λ˜μ–΄ 이것이 μ–΄λ””μ„œ κ³ μž₯λ‚¬λŠ”μ§€ 좔적할 수 μ—†μŠ΅λ‹ˆλ‹€.

κ·Έλƒ₯ ν˜ΈκΈ°μ‹¬μ—μ„œ: toHaveBeenCalled() λ₯Ό μ‚¬μš©ν•˜μ§€ μ•Šκ² μŠ΅λ‹ˆκΉŒ?

'toHaveBeenCalled'λŠ” ν•¨μˆ˜κ°€ μ „ν˜€ ν˜ΈμΆœλ˜μ—ˆλŠ”μ§€ ν™•μΈν•©λ‹ˆλ‹€. 인수 없이 호좜된 ν•¨μˆ˜λ₯Ό ꡬ체적으둜 ν…ŒμŠ€νŠΈν•˜λŠ” ν…ŒμŠ€νŠΈκ°€ μžˆμŠ΅λ‹ˆλ‹€.

μ‹€μ œ μ‚¬μš© 사둀: 이 ν•¨μˆ˜λŠ” λͺ©λ‘μ—μ„œ μž‘λ™ν•˜λ©° idλ₯Ό μ·¨ν•˜κ±°λ‚˜(단일 ν•­λͺ©μ— λŒ€ν•΄ μž‘λ™) id 없이 호좜되고(전체 λͺ©λ‘μ—μ„œ μž‘λ™ν•¨)

이 νŽ˜μ΄μ§€κ°€ 도움이 λ˜μ—ˆλ‚˜μš”?
0 / 5 - 0 λ“±κΈ‰