测试在不同文件中具有依赖关系的模块时.将该模块指定jest.Mock为mockReturnThisOncetypescript时会给出一个错误,即该依赖项上不存在该方法(或任何其他jest.Mock方法),这是因为它以前是键入的.从jest.Mock获取typescript继承类型的正确方法是什么?
这是一个简单的例子.
依赖
const myDep = (name: string) => name;
export default myDep;
Run Code Online (Sandbox Code Playgroud)
test.ts
import * as dep from '../depenendency';
jest.mock('../dependency');
it('should do what I need', () => {
//this throws ts error
// Property mockReturnValueOnce does not exist on type (name: string)....
dep.default.mockReturnValueOnce('return')
}
Run Code Online (Sandbox Code Playgroud)
我觉得这是一个非常常见的用例,不知道如何正确输入.任何帮助将非常感激!
上下文:我有依赖于类 A 的类 B。我想测试类 B 的方法,该方法在内部调用类 A 的方法。现在,我想通过模拟类 A 对类 B 的方法进行单元测试。
注1:A类有一些私有成员
注2:A类没有接口
这是我的代码结构:
class Base {
someMethod() {
return "Hello ";
}
}
class A {
private _baseClassImpl: Base;
constructor(baseClassImpl: Base) {
this._baseClassImpl = baseClassImpl;
}
getSomething() {
return this._baseClassImpl.someMethod() + " Something";
}
}
class B {
constructor(objectOfClassA: A) {
this._objectOfClassA = objectOfClassA;
}
functionOfClassBToTest() {
const returnValueFromClassA = this._objectOfClassA.getSomething();
return returnValueFromClassA;
}
}
Run Code Online (Sandbox Code Playgroud)
到目前为止我已经尝试过:
在采纳了我之前的 SO 帖子的建议后,我尝试编写这样的测试:
const getSomethingMock = jest.fn().mockImplementation(() …Run Code Online (Sandbox Code Playgroud)