Почему 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

Единственный способ обойти эту проблему, который я нашел, - создать оболочку для локального модуля и вместо этого смоделировать оболочку.

Есть ли у кого-нибудь лучший способ решить эту проблему?

0 ответов

Другие вопросы по тегам