test: remove mock hack of require.reesolve

ref: https://github.com/facebook/jest/pull/7687
This commit is contained in:
ULIVZ
2019-04-15 02:27:02 +08:00
parent d6040f6458
commit 5d2fc90016
2 changed files with 16 additions and 20 deletions
@@ -21,7 +21,7 @@ function loadMockModule (name: string) {
}
function resolveMockModule (name: string) {
return path.resolve(__dirname, `${MOCK_RELATIVE}/${name}`)
return require.resolve(path.resolve(__dirname, `${MOCK_RELATIVE}/${name}/`))
}
const fixturesDir = path.resolve(__dirname, 'fixtures')
@@ -110,12 +110,14 @@ describe('resolvePlugin', () => {
expect(resolved.fromDep).toBe(false)
})
test('from dep', () => {
describe('from dep', () => {
const asserts = getBaseAsserts('plugin')
for (const { input, output } of asserts) {
const [, name] = output
const resolved = resolvePlugin(input)
expect(resolved.entry).toBe(loadMockModule(name))
test(input, () => {
const [, name] = output
const resolved = resolvePlugin(input)
expect(resolved.entry).toBe(loadMockModule(name))
})
}
})
@@ -137,12 +139,14 @@ describe('resolvePlugin', () => {
describe('resolveTheme', () => {
const resolveTheme = themeResolver.resolve.bind(themeResolver)
test('from dep', () => {
describe('from dep', () => {
const asserts = getBaseAsserts('theme')
for (const { input, output } of asserts) {
const [, name] = output
const resolved = resolveTheme(input)
expect(resolved.entry).toBe(resolveMockModule(name))
test(input, () => {
const [, name] = output
const resolved = resolveTheme(input)
expect(resolved.entry).toBe(resolveMockModule(name))
})
}
})
@@ -1,8 +1,6 @@
// Midified from https://github.com/vuejs/vue-cli/blob/dev/packages/@0vue/cli-shared-utils/lib/module.js
import semver from 'semver'
import path from 'upath'
import fs from 'fs-extra'
import env from './env'
function resolveFallback (request: string, options: { paths: string[] }) {
@@ -40,15 +38,9 @@ const resolve = semver.satisfies(process.version, '>=10.0.0')
export function resolveModule (request: string, context: string): string {
let resolvedPath
// TODO
// Temporary workaround for jest cannot resolve module path from '__mocks__'
// when using 'require.resolve'.
if (env.isTest && request !== '@vuepress/theme-default') {
resolvedPath = path.resolve(__dirname, '../../../../__mocks__', request)
if (!fs.existsSync(`${resolvedPath}.js`) && !fs.existsSync(`${resolvedPath}/index.js`)) {
throw new Error(`Cannot find module '${request}'`)
}
return resolvedPath
if (env.isTest) {
return require.resolve(request)
}
// module.paths is for globally install packages.