假设我有下面的代码,我想测试someFunc()
,但我想模拟doSomething()
函数?当SomeClass
只在someFunc()
本身内部初始化,而不是在测试中初始化时,我如何在测试中做到这一点?
class SomeClass {
constructor(element){
this.element = element
}
doSomething(element){
...
}
}
function someFunc() {
const newClass = new SomeClass()
newClass.doSomething() // I want this to get to the mocked function
}
我在开玩笑,请帮忙!
尝试一些测试框架,其中大多数都提供间谍,允许您模拟给定类的特定函数。
例如,你可以试试Jasmine-https://jasmine.github.io/api/edge/Spy.html你会在哪里做一些类似的事情
spyOn(newClass, 'doSomething').and.returnValue(42);
Jest中有多种模拟es6类的方法:https://jestjs.io/docs/es6-class-mocks