0
노드의 내장 함수 require.resolve
을 조롱 테스트 스위트로 조롱하고 싶습니다. 여기에 문제가 on repl.it와 코드 자체의 작동 예 :조커 (jest test)를 조롱하고 테스트합니다.
시험 대상 (예를 들어) :
const requirer =() => {
try {
return require.resolve('./add')
} catch (error) {
console.error('failed to find a module')
}
}
module.exports = requirer
테스트 스위트 : 테스트 스위트 선언의 내부
const requirer = require('./requirer')
describe('attempt to mock require.resolve',() => {
it('does not work',() => {
require.resolve = jest.fn(arg => `./${arg}`)
console.log(
'is require.resolve mocked',
jest.isMockFunction(require.resolve)) // will say true
requirer()
expect(require.resolve).toHaveBeenCalledTimes(1)
expect(require.resolve).toBeCalledWith('')
})
})
는 모든이다 OK (jest.isMockFunction(require.resolve)
의 출력 참조)와 모의 작업. 하지만 테스트 대상인 require.resolve
은 원래 기능을 유지합니다.
이 문제로 인해 이것은 순수한 단위 테스트가 아닙니다.
만약 내가 예를 들어, 모의 process.exit
모두 예상대로 작동합니다.
을 예상대로