Я хотел бы проверить, вызывается ли конкретная функция из функции, которую я тестирую, однако обе эти функции находятся в классе es6, который я тестирую.
Настраивать:
// MyClass.js
export default class MyClass {
constructor () { ... }
foo() {
...
bar()
}
bar() {
...
}
}
Итак, я тестирую foo (), но в рамках своего теста я хочу убедиться, что вызывается bar (). Я вижу, как я могу это сделать, если bar () была внешней зависимостью, так как я мог бы просто высмеять это, но поскольку это часть тестируемого класса, я не могу издеваться над всем классом, иначе я бы не стал называть конкретную реализацию в моем тесте.
Я надеялся, что это поможет (согласно https://facebook.github.io/jest/docs/en/es6-class-mocks.html), но безрезультатно:
// MyClass.spec.js
jest.unmock('./MyClass')
import MyClass from './MyClass'
...
test('my test', () => {
var mockBar = jest.fn()
MyClass.bar = mockBar
var myClass = new MyClass()
myClass.foo()
expect(mockBar).toHaveBeenCalled()
})
Я также попытался издеваться над методом в созданной версии MyClass (т.е. myClass.bar = mockBar), но ни один из них не дал желаемых результатов.
Возможна ли эта насмешливая структура с помощью шутки?