_κΈ°λ₯_μ μμ²νμκ² μ΅λκΉ? μλλ©΄ _λ²κ·Έ_λ₯Ό λ³΄κ³ νμκ² μ΅λκΉ?
λ²κ·Έλ₯Ό λ³΄κ³ ν©λλ€.
νμ¬ νλμ 무μμ
λκΉ?
νλ‘μ νΈμ λͺ¨μκ° μλ λ΄λΆ νμΌκ³Ό μ΄λ¦μ΄ κ°μ λͺ¨λμ λν μ’
μμ±μ΄ μλ κ²½μ° ν΄λΉ λͺ¨μ ꡬνμ μ μ λͺ¨λ λμ μ μ λͺ¨λμ μμ²μ λν΄ κ²μλλ―λ‘ λͺ
μμ λͺ¨μ ν΄μ κ° νμν©λλ€. νλμ μ€μ§μ μΈ λ³νλ₯Ό λνλ).
νμ¬ λμμ΄ λ²κ·ΈμΈ κ²½μ° μ¬ννλ λ¨κ³λ₯Ό μ 곡νκ³ κ°λ₯ν κ²½μ° GitHubμ npm install
λ° npm test
ν μ μλ μ΅μ μ μ₯μλ₯Ό μ 곡νμμμ€.
npm install
μ’
μμ± λ³΅μ npm test
μ μ λͺ¨λ( with no explicit opt-out βΊ globalPad should not be a mock function
)μ κ°μ Έμ¬ μ μμ κ²μΌλ‘ μμλλ ν
μ€νΈλ λ°νλ λͺ¨λμ΄ μ€μ λ‘ μλ λͺ¨μμ΄κΈ° λλ¬Έμ μ€ν¨ν©λλ€.
( left-pad
λ μ»΄νμΌ μꡬ μ¬νμ΄ μλ μμ λͺ¨λμ΄λ―λ‘ μ¬κΈ°μμ μ¬μ©λ©λλ€.)
μμλλ λμμ 무μμ λκΉ?
import λ¬Έμ explicit-opt-out.js
μμμ κ°μ΄ μ μ λͺ¨λμ λ°νν΄μΌ ν©λλ€.
--debug
Jestλ₯Ό λ€μ μ€ννκ³ μΈμν μ 체 ꡬμ±μ μ 곡ν©λλ€.
jest version = 16.0.1
test framework = jasmine2
config = {
"rootDir": "/Users/jessica/Repositories/jest-mock-bug",
"name": "-Users-jessica-Repositories-jest-mock-bug",
"setupFiles": [],
"testRunner": "/Users/jessica/Repositories/jest-mock-bug/node_modules/jest-jasmine2/build/index.js",
"scriptPreprocessor": "/Users/jessica/Repositories/jest-mock-bug/node_modules/babel-jest/build/index.js",
"usesBabelJest": true,
"automock": false,
"bail": false,
"browser": false,
"cacheDirectory": "/var/folders/rl/98bml8qx57n3b6xgsgyvbxtr0000gn/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/jessica/Repositories/jest-mock-bug"
],
"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
}
}
μ΄ κ²½μ°κ° λ΄ νλ‘μ νΈμμ λ°μνλ κ²κ³Ό μ μ¬νλ€κ³ μκ°ν©λλ€.
μ κ²½μ°μλ <rootDir>/__mocks__/left-pad.js
μμ΅λλ€. left-pad
λ₯Ό κ°μ Έμ€λ λͺ¨λ ν
μ€νΈλ jest.mock('left-pad')
λͺ
μμ μΌλ‘ νΈμΆνμ§ μλλΌλ μ‘°λ‘±λ left-pad
λ₯Ό μλμΌλ‘ κ°μ Έμ΅λλ€.
νμ¬ ν΄κ²° λ°©λ²μ λͺ μμ μΌλ‘ λͺ¨μν λ€μ λͺ μμ μΌλ‘ λͺ¨μ ν΄μ νλ κ²μ λλ€. μΆμ νμ§λ§ μλν©λλ€
jest.mock('left-pad');
jest.unmock('left-pad');
μν, κ³ λ§μ! κ·Έκ²μ λ΄ κ²λ³΄λ€ λ κΉ¨λν ν΄κ²° λ°©λ²μ΄μ§λ§ μ¬μ ν μ΄μμ μ΄μ§λ μμ΅λλ€!
μ, μλ λͺ¨μκ° λ
Έλ λͺ¨λλ³΄λ€ μ°μ ν©λλ€. μλ λͺ¨μ μμ€ν
μ μ½κ° μ€μΌμΉμ μ
λλ€. νμ¬λ‘μλ λ€μ 릴리μ€μμ κ²½κ³ λ₯Ό μ κ±°νκ³ μμΌλ―λ‘ jest.unmock('left-pad')
μμΌλ©΄ λ©λλ€. #2022 μ°Έμ‘°
μ°λ¦¬κ° κ°μ§κ³ μλ ν κ°μ§ μμ΄λμ΄λ μλ λ Έλ λͺ¨λ λͺ¨μλ₯Ό μν λ³λμ μμ€ν μ λ§λλ κ²μ΄μμ§λ§ μ΄λ λ³λμ μ μμμ λ Όμλμ΄μΌ ν κ²μ΄λ―λ‘ μ΄ λ¬Έμ λ₯Ό λ§λ¬΄λ¦¬νκ² μ΅λλ€.
κ°μ₯ μ μ©ν λκΈ
μ, μλ λͺ¨μκ° λ Έλ λͺ¨λλ³΄λ€ μ°μ ν©λλ€. μλ λͺ¨μ μμ€ν μ μ½κ° μ€μΌμΉμ μ λλ€. νμ¬λ‘μλ λ€μ 릴리μ€μμ κ²½κ³ λ₯Ό μ κ±°νκ³ μμΌλ―λ‘
jest.unmock('left-pad')
μμΌλ©΄ λ©λλ€. #2022 μ°Έμ‘°μ°λ¦¬κ° κ°μ§κ³ μλ ν κ°μ§ μμ΄λμ΄λ μλ λ Έλ λͺ¨λ λͺ¨μλ₯Ό μν λ³λμ μμ€ν μ λ§λλ κ²μ΄μμ§λ§ μ΄λ λ³λμ μ μμμ λ Όμλμ΄μΌ ν κ²μ΄λ―λ‘ μ΄ λ¬Έμ λ₯Ό λ§λ¬΄λ¦¬νκ² μ΅λλ€.