рдХреНрдпрд╛ рдЖрдк _feature_ рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдпрд╛ _bug_ рдХреА рд░рд┐рдкреЛрд░реНрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ?
рдЧрд▓рддреА рд╕реВрдЪрд┐рдд рдХрд░реЗрдВред
рд╡рд░реНрддрдорд╛рди рд╡реНрдпрд╡рд╣рд╛рд░ рдХреНрдпрд╛ рд╣реИ?
рдпрджрд┐ рдХрд┐рд╕реА рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдореЙрдХ рдХреЗ рд╕рд╛рде рдЖрдВрддрд░рд┐рдХ рдлрд╝рд╛рдЗрд▓ рдХреЗ рд╕рдорд╛рди рдирд╛рдо рд╡рд╛рд▓реЗ рдореЙрдбреНрдпреВрд▓ рдкрд░ рдирд┐рд░реНрднрд░рддрд╛ рд╣реИ, рддреЛ рд╡реИрд╢реНрд╡рд┐рдХ рдореЙрдбреНрдпреВрд▓ рдХреЗ рдмрдЬрд╛рдп рд╡реИрд╢реНрд╡рд┐рдХ рдореЙрдбреНрдпреВрд▓ рдХреЗ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рд▓рд┐рдП рдирдХрд▓реА рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рд╕реНрдкрд╖реНрдЯ рдЕрдирдореЙрдХрд┐рдВрдЧ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ (рдЬреЛ рддрдм рдЪреЗрддрд╛рд╡рдиреА рдкреНрд░рд┐рдВрдЯ рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рдХреЗ рдмрд╛рд╡рдЬреВрдж рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ рдПрдХ рдареЛрд╕ рдкрд░рд┐рд╡рд░реНрддрди рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдирд╛)ред
рдпрджрд┐ рд╡рд░реНрддрдорд╛рди рд╡реНрдпрд╡рд╣рд╛рд░ рдПрдХ рдмрдЧ рд╣реИ, рддреЛ рдХреГрдкрдпрд╛ рдкреБрди: рдкреЗрд╢ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрджрдо рдкреНрд░рджрд╛рди рдХрд░реЗрдВ рдФрд░ рдпрджрд┐ рд╕рдВрднрд╡ рд╣реЛ рддреЛ рдЧрд┐рдЯрд╣рдм рдкрд░ рдПрдХ рдиреНрдпреВрдирддрдо рднрдВрдбрд╛рд░ рд╣реИ рдХрд┐ рд╣рдо npm install
рдФрд░ npm test
ред
npm install
рдирд┐рд░реНрднрд░рддрд╛npm test
рдЪрд▓рд╛рдПрдБрд╡реИрд╢реНрд╡рд┐рдХ рдореЙрдбреНрдпреВрд▓ ( with no explicit opt-out тА║ globalPad should not be a mock function
) рдХреЛ рдЖрдпрд╛рдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдиреЗ рдХреА рдЙрдореНрдореАрдж рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдкрд░реАрдХреНрд╖рдг рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд▓реМрдЯрд╛рдпрд╛ рдЧрдпрд╛ рдореЙрдбреНрдпреВрд▓ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдореИрдиреБрдЕрд▓ рдореЙрдХ рд╣реИред
(рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ left-pad
рдХрд╛ рдЙрдкрдпреЛрдЧ рдпрд╣рд╛рдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдПрдХ рдЫреЛрдЯрд╛ рдореЙрдбреНрдпреВрд▓ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдХреЛрдИ рд╕рдВрдХрд▓рди рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред)
рдЕрдкреЗрдХреНрд╖рд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░ рдХреНрдпрд╛ рд╣реИ?
рдЖрдпрд╛рдд рд╡рд┐рд╡рд░рдг рдХреЛ рд╡реИрд╢реНрд╡рд┐рдХ рдореЙрдбреНрдпреВрд▓ рд╡рд╛рдкрд╕ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЬреИрд╕рд╛ рдХрд┐ рдпрд╣ explicit-opt-out.js
рдЬреЗрд╕реНрдЯ рдХреЛ рдлрд┐рд░ рд╕реЗ --debug
рд╕рд╛рде рдЪрд▓рд╛рдПрдВ рдФрд░ рдЗрд╕рдХреЗ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рд┐рдВрдЯ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдкреВрд░реНрдг рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЛ рдкреНрд░рджрд╛рди рдХрд░реЗрдВред
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
рдЖрдпрд╛рдд рдХрд░рддреЗ рд╣реИрдВ, рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдирдХрд▓реА left-pad
рдЖрдпрд╛рдд рдХрд░реЗрдВрдЧреЗ, рднрд▓реЗ рд╣реА рдореИрдВрдиреЗ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ jest.mock('left-pad')
рдХреЙрд▓ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдерд╛
рдореЗрд░рд╛ рд╡рд░реНрддрдорд╛рди рдХрд╛рдордХрд╛рдЬ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдирдХрд▓реА рд╣реИ рдФрд░ рдлрд┐рд░ рдЙрдиреНрд╣реЗрдВ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЕрдирдореЙрдХ рдХрд░реЗрдВред рдпрд╣ рдмрджрд╕реВрд░рдд рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ
jest.mock('left-pad');
jest.unmock('left-pad');
рдЖрд╣, рдзрдиреНрдпрд╡рд╛рдж! рдпрд╣ рдореЗрд░реА рддреБрд▓рдирд╛ рдореЗрдВ рдПрдХ рдХреНрд▓реАрдирд░ рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЕрднреА рднреА рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЖрджрд░реНрд╢ рдирд╣реАрдВ рд╣реИ!
рд╣рд╛рдВ, рдиреЛрдб рдореЙрдбреНрдпреВрд▓ рдкрд░ рдореИрдиреБрдЕрд▓ рдореЙрдХ рдХреЛ рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рджреА рдЬрд╛рддреА рд╣реИред рдореИрдиреБрдЕрд▓ рдореЙрдХ рд╕рд┐рд╕реНрдЯрдо рдереЛрдбрд╝рд╛ рд╕реНрдХреЗрдЪреА рд╣реИред рдЕрднреА рдХреЗ рд▓рд┐рдП, рд╣рдо рдЕрдЧрд▓реА рд░рд┐рд▓реАрдЬрд╝ рдореЗрдВ рдЪреЗрддрд╛рд╡рдиреА рдХреЛ рд╣рдЯрд╛ рд░рд╣реЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП jest.unmock('left-pad')
рдЖрдкрдХреЛ рдмрд╕ рдЗрддрдирд╛ рд╣реА рдЪрд╛рд╣рд┐рдПред рджреЗрдЦреЗрдВ #2022
рдПрдХ рд╡рд┐рдЪрд╛рд░ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдореИрдиреБрдЕрд▓ рдиреЛрдб рдореЙрдбреНрдпреВрд▓ рдореЙрдХ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрд▓рдЧ рдкреНрд░рдгрд╛рд▓реА рдмрдирд╛рдиреЗ рдХрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдЗрд╕рдХреА рдПрдХ рдЕрд▓рдЧ рдкреНрд░рд╕реНрддрд╛рд╡ рдореЗрдВ рдЪрд░реНрдЪрд╛ рдХреА рдЬрд╛рдиреА рдЪрд╛рд╣рд┐рдП, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдмрдВрдж рдХрд░ рджреВрдВрдЧрд╛ред
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
рд╣рд╛рдВ, рдиреЛрдб рдореЙрдбреНрдпреВрд▓ рдкрд░ рдореИрдиреБрдЕрд▓ рдореЙрдХ рдХреЛ рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рджреА рдЬрд╛рддреА рд╣реИред рдореИрдиреБрдЕрд▓ рдореЙрдХ рд╕рд┐рд╕реНрдЯрдо рдереЛрдбрд╝рд╛ рд╕реНрдХреЗрдЪреА рд╣реИред рдЕрднреА рдХреЗ рд▓рд┐рдП, рд╣рдо рдЕрдЧрд▓реА рд░рд┐рд▓реАрдЬрд╝ рдореЗрдВ рдЪреЗрддрд╛рд╡рдиреА рдХреЛ рд╣рдЯрд╛ рд░рд╣реЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП
jest.unmock('left-pad')
рдЖрдкрдХреЛ рдмрд╕ рдЗрддрдирд╛ рд╣реА рдЪрд╛рд╣рд┐рдПред рджреЗрдЦреЗрдВ #2022рдПрдХ рд╡рд┐рдЪрд╛рд░ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдореИрдиреБрдЕрд▓ рдиреЛрдб рдореЙрдбреНрдпреВрд▓ рдореЙрдХ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрд▓рдЧ рдкреНрд░рдгрд╛рд▓реА рдмрдирд╛рдиреЗ рдХрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдЗрд╕рдХреА рдПрдХ рдЕрд▓рдЧ рдкреНрд░рд╕реНрддрд╛рд╡ рдореЗрдВ рдЪрд░реНрдЪрд╛ рдХреА рдЬрд╛рдиреА рдЪрд╛рд╣рд┐рдП, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдмрдВрдж рдХрд░ рджреВрдВрдЧрд╛ред