我正在使用Jest进行客户端测试。 但是我有问题。
当我替换Class方法以模拟功能并恢复模拟功能时,
我使用Jest (x*sizeOf(int))+initialMemoryPosition
方法。
但这不起作用。
如何解决此问题?
mockRestore
答案 0 :(得分:0)
从文档中:https://jestjs.io/docs/en/mock-function-api#mockfnmockrestore
请注意,仅当使用jest.spyOn创建模拟时,mockFn.mockRestore才起作用。
所以,这是解决方法:
OriginalClass.ts
:
export class OriginalClass {
public static call() {
return 'real data';
}
public static testCall() {
return this.call();
}
}
单元测试:
OriginalClass.spec.ts
import { OriginalClass } from './OriginalClass';
describe('OriginalClass', () => {
it('should mock correctly', () => {
jest.spyOn(OriginalClass, 'call').mockReturnValue(`test`);
const actualValue = OriginalClass.testCall();
expect(actualValue).toBe('test');
(OriginalClass.call as jest.MockedFunction<typeof OriginalClass.call>).mockRestore();
});
it('should restore to original implementation', () => {
expect(jest.isMockFunction(OriginalClass.call)).toBeFalsy();
});
});
单元测试结果:
PASS src/stackoverflow/57410473/OriginalClass.spec.ts
OriginalClass
✓ should mock correctly (7ms)
✓ should restore to original implementation (1ms)
Test Suites: 1 passed, 1 total
Tests: 2 passed, 2 total
Snapshots: 0 total
Time: 4.983s
以下是完整的演示:https://github.com/mrdulin/jest-codelab/tree/master/src/stackoverflow/57410473