mirror of https://github.com/facebook/jest.git
fix: absolute path moduleNameMapper + jest.mock issue (#8727)
This commit is contained in:
parent
03dbb2fa82
commit
0a63d4099f
|
@ -16,6 +16,7 @@
|
||||||
- `[jest-config, jest-resolve]` [**BREAKING**] Remove support for `browser` field ([#9943](https://github.com/facebook/jest/pull/9943))
|
- `[jest-config, jest-resolve]` [**BREAKING**] Remove support for `browser` field ([#9943](https://github.com/facebook/jest/pull/9943))
|
||||||
- `[jest-haste-map]` Stop reporting files as changed when they are only accessed ([#7347](https://github.com/facebook/jest/pull/7347))
|
- `[jest-haste-map]` Stop reporting files as changed when they are only accessed ([#7347](https://github.com/facebook/jest/pull/7347))
|
||||||
- `[jest-resolve]` Show relative path from root dir for `module not found` errors ([#9963](https://github.com/facebook/jest/pull/9963))
|
- `[jest-resolve]` Show relative path from root dir for `module not found` errors ([#9963](https://github.com/facebook/jest/pull/9963))
|
||||||
|
- `[jest-runtime]` Fix absolute path moduleNameMapper + jest.mock bug ([#8727](https://github.com/facebook/jest/pull/8727))
|
||||||
|
|
||||||
### Chore & Maintenance
|
### Chore & Maintenance
|
||||||
|
|
||||||
|
|
|
@ -5,6 +5,11 @@ PASS __tests__/index.js
|
||||||
✓ moduleNameMapping correct configuration
|
✓ moduleNameMapping correct configuration
|
||||||
`;
|
`;
|
||||||
|
|
||||||
|
exports[`moduleNameMapper correct configuration mocking module of absolute path 1`] = `
|
||||||
|
PASS __tests__/index.js
|
||||||
|
✓ moduleNameMapping correct configuration
|
||||||
|
`;
|
||||||
|
|
||||||
exports[`moduleNameMapper wrong array configuration 1`] = `
|
exports[`moduleNameMapper wrong array configuration 1`] = `
|
||||||
FAIL __tests__/index.js
|
FAIL __tests__/index.js
|
||||||
● Test suite failed to run
|
● Test suite failed to run
|
||||||
|
|
|
@ -35,6 +35,20 @@ test('moduleNameMapper correct configuration', () => {
|
||||||
expect(wrap(rest)).toMatchSnapshot();
|
expect(wrap(rest)).toMatchSnapshot();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
test('moduleNameMapper correct configuration mocking module of absolute path', () => {
|
||||||
|
const {stderr, exitCode} = runJest(
|
||||||
|
'module-name-mapper-correct-mock-absolute-path',
|
||||||
|
[],
|
||||||
|
{
|
||||||
|
stripAnsi: true,
|
||||||
|
},
|
||||||
|
);
|
||||||
|
const {rest} = extractSummary(stderr);
|
||||||
|
|
||||||
|
expect(exitCode).toBe(0);
|
||||||
|
expect(wrap(rest)).toMatchSnapshot();
|
||||||
|
});
|
||||||
|
|
||||||
test('moduleNameMapper with mocking', () => {
|
test('moduleNameMapper with mocking', () => {
|
||||||
const {json} = runWithJson('module-name-mapper-mock');
|
const {json} = runWithJson('module-name-mapper-mock');
|
||||||
expect(json.numTotalTests).toBe(2);
|
expect(json.numTotalTests).toBe(2);
|
||||||
|
|
|
@ -0,0 +1,16 @@
|
||||||
|
/**
|
||||||
|
* Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved.
|
||||||
|
*
|
||||||
|
* This source code is licensed under the MIT license found in the
|
||||||
|
* LICENSE file in the root directory of this source tree.
|
||||||
|
*/
|
||||||
|
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
const importedFn = require('../');
|
||||||
|
|
||||||
|
jest.mock('/components/Button');
|
||||||
|
|
||||||
|
test('moduleNameMapping correct configuration', () => {
|
||||||
|
expect(importedFn).toBeDefined();
|
||||||
|
});
|
|
@ -0,0 +1,12 @@
|
||||||
|
/**
|
||||||
|
* Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved.
|
||||||
|
*
|
||||||
|
* This source code is licensed under the MIT license found in the
|
||||||
|
* LICENSE file in the root directory of this source tree.
|
||||||
|
*/
|
||||||
|
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
require('/components/Button');
|
||||||
|
|
||||||
|
module.exports = () => 'test';
|
|
@ -0,0 +1,7 @@
|
||||||
|
{
|
||||||
|
"jest": {
|
||||||
|
"moduleNameMapper": {
|
||||||
|
"^/(.*)$": "<rootDir>/src/$1"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,8 @@
|
||||||
|
/**
|
||||||
|
* Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved.
|
||||||
|
*
|
||||||
|
* This source code is licensed under the MIT license found in the
|
||||||
|
* LICENSE file in the root directory of this source tree.
|
||||||
|
*/
|
||||||
|
|
||||||
|
module.exports = () => 'Button';
|
|
@ -584,12 +584,10 @@ class Runtime {
|
||||||
}
|
}
|
||||||
|
|
||||||
const manualMockOrStub = this._resolver.getMockModule(from, moduleName);
|
const manualMockOrStub = this._resolver.getMockModule(from, moduleName);
|
||||||
let modulePath;
|
|
||||||
if (manualMockOrStub) {
|
let modulePath =
|
||||||
modulePath = this._resolveModule(from, manualMockOrStub);
|
this._resolver.getMockModule(from, moduleName) ||
|
||||||
} else {
|
this._resolveModule(from, moduleName);
|
||||||
modulePath = this._resolveModule(from, moduleName);
|
|
||||||
}
|
|
||||||
|
|
||||||
let isManualMock =
|
let isManualMock =
|
||||||
manualMockOrStub &&
|
manualMockOrStub &&
|
||||||
|
|
Loading…
Reference in New Issue