0
ノードの組み込み関数require.resolve
をjestテストスイートで模擬したいと思います。ここで問題on repl.itとコード自体の作業例:冗談での黙示とテストrequire.resolveの呼び出し
被験者(例として):
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
はすべて正常に動作します。