Почему testDouble не может имитировать стороннюю функцию?
У меня есть локальный модуль с функцией, которую я хочу имитировать, используя tetDouble для nodeJS
Это функция, которую я хочу протестировать:
import {supportsAPL} from "skills-lib"
export function example(thing: any): boolean {
if (!supportsAPL(thing)) {
throw new Error("numbers only!")
}
return true
}
А вот собственно тест:
const td = require("testdouble")
require("testdouble-jest")(td, jest)
const supportsAPL = td.replace("skills-lib")
import {example} from "../lambda/custom/numbers-only"
// const example = require("../lambda/custom/numbers-only")
describe("ex", () => {
it("ex2", async () => {
td.when(supportsAPL("a string")).thenReturn(true) // tee-hee, this is silly
const result = example("a string")
expect(result).toMatch("true")
})
})
Код работает нормально, но когда я запускаю тест, я получаю:
supportsAPL is not a function
TypeError: supportsAPL is not a function
Единственный способ обойти эту проблему, который я нашел, - создать оболочку для локального модуля и вместо этого смоделировать оболочку.
Есть ли у кого-нибудь лучший способ решить эту проблему?