#node.js #test-double #testdoublejs
Вопрос:
У меня есть локальный модуль с функцией, которую я хочу смоделировать, используя 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
Единственный способ, который я нашел, чтобы обойти эту проблему,-это создать оболочку для локального модуля и вместо этого издеваться над оболочкой.
У кого-нибудь есть лучший способ решить эту проблему?