Node.js mock实现后的unck函数
我在卸载函数时遇到了一些问题 我先是嘲笑它,现在我无法解开它Node.js mock实现后的unck函数,node.js,jestjs,Node.js,Jestjs,我在卸载函数时遇到了一些问题 我先是嘲笑它,现在我无法解开它 //myClass.js class myClass { static check(v1,v2) { return v1 > v2; } static async getinfo(v1,v2) { if (this.check(v1,v2)) { return await get('api.google.com'); }
//myClass.js
class myClass {
static check(v1,v2) {
return v1 > v2;
}
static async getinfo(v1,v2) {
if (this.check(v1,v2)) {
return await get('api.google.com');
}
return [];
}
}
//myclass.spec.js
describe('Testing myClass', () => {
describe('testing processing', () => {
it('should return result', () => {
const mockPatch = jest.fn().mockImplementation((version, solution) => false);
myClass.check = mockCheck;
try {
const result = await myClass.getinfo(1,2);
expect(result).toBe.([]);
}catch(e) {
throw e;
}
})
})
describe('Testing check', () => {
it('should return true', () => {
expect(myClass.check(2,1)).toBe.true
})
})
})
我已经试过了
myClass.check.mockRestore()
beforeach(()=>{myClass.check.mockRestore()})
jest.unmack('./myClass.js)
我能解决这个问题吗?我阅读了所有的jest文档,但找不到任何东西。我假设您希望做的是模拟一个实现,以便在特定测试中使用,但随后让您的其他测试在没有模拟的情况下运行 如果是这样的话,我想你可以结合使用
确保在测试顶部导入模块,然后使用相同的路径调用
jest.mock
。在此之后,您应该能够调用myClass.check.mockReturnValueOnce
,它将被模拟,直到下次调用它为止。在那之后,它将正常工作方法永远不应该通过重新分配它们来模仿,Jest无法通过这种方式恢复它们原来的实现
这应始终使用spyOn
:
jest.spyOn(myClass, 'check').mockReturnValue(false)
这样,可以使用
restoreMock
或restoreAllMocks
还原方法。最好在中全局启用此功能。您能描述一下您在测试中尝试执行的操作吗?我想有一种比你希望在这里做的更好的方法,我想对check
函数的可能响应进行单元测试。你认为我应该怎么做?这是在模拟所有模块,现在我发现myClass.getinfo是未定义的
在做第一个测试时。我在同一个测试中尝试了restoreMock,但它没有工作,但在cfg文件中它工作正常。泰!