Один из вариантов - заменить модуль MyClass на импровизированную реализацию
const mockmyfunc = jest.fn()
jest.mock("path/to/external/package/MyClass", () => {
return jest.fn().mockImplementation(() => {
return {myfunc: mockmyfunc}
})
})
А затем напишите следующий тест
it("Test myfunc called in functionToBeTested", () => {
functionToBeTested()
expect(mockmyfunc).toHaveBeenCalled()
})
Обратите внимание, что это не единственный способ, вы можете погрузиться в https://facebook.github.io/jest/docs/en/es6-class-mocks.html для других альтернатив.
Обновление
Если myfunc будет реальной функцией (что, я думаю, не вариант, так как это внешний пакет?)
export class MyClass {
myFunc() {
// do smth
}
}
и вам не нужно будет заменять реализацию, вы можете использовать Jest's Autock
import MyClass from "path/to/external/package/MyClass"
jest.mock("path/to/external/package/MyClass")
it("Test myfunc called in functionToBeTested", () => {
functionToBeTested()
const mockMyFunc = MyClass.mock.instances[0].myFunc
expect(mockMyFunc).toHaveBeenCalled()
})