mainClass.js
import { GetData } from './childClass';
export class MainClass {
static async execute() {
const response = GetData();
return response;
}
}
childClass.js
class response {
constructor({ data }) {
this.data = data;
}
}
export async function GetData() {
return new response(data);
}
在这里,我尝试使用jest测试这个mainClass.jsexecute函数。为了测试,我想模拟GetData函数,它是childClass文件的一部分。但是这里有一点我不能直接模拟这个函数,因为GetData是只读的。我不能将函数属性更改为读写。所以我想要一种方法来模拟这个GetData函数。
尝试过的东西
1)
beforeAll(() => {
jest.mock('./childClass', () => ({
GetData: jest.fn()
}));
});
2)
beforeAll(() => {
mockFunctionData = jest.spyOn(MainClass, 'GetData').mockReturnValue({});
});
没有一个在工作。先谢谢你了。
1条答案
按热度按时间monwx1rj1#
首先,我个人更喜欢
spyOn
,所以我会用它来回答。当您执行
jest.spyOn(MainClass, 'GetData')
时,您的目标是错误的。您希望在childClass.js
中模拟GetData
函数。因此,您需要监视包含它的对象:而不是
MainClass
。在你的例子中,对象是一个模块(即所以你必须将模块作为一个整体导入,然后监视它: