【发布时间】:2022-11-07 22:36:13
【问题描述】:
在使用 jest 库的MockedClass 模拟 ES6 类时,我正在努力模拟一个方法。
例子:
export default class CalculatorService {
constructor() {
// setup stuff
}
public add(num1: number, num2: number): number {
return num1 + num2;
}
}
以下按预期工作:
import CalculatorService from 'services/calculatorService';
jest.mock('services/calculatorService');
const MockedCalculatorService = CalculatorService as jest.MockedClass<typeof CalculatorService>;
describe('Tests', () => {
test('Test flow with Calculator service', () => {
// Arrange
// Act
implementation(1,2); // Where CalculatorService is used
// Assert
const mockServiceInstance = MockedService.mock.instances[0];
expect(mockServiceInstance.add).toHaveBeenCalledWith(1,2);
});
}
但是假设我想模拟 add 以始终返回 5,无论输入如何。
使用jest.Mocked,它的完成方式如下:MockedService.add.mockReturnValue(5),如果我理解正确的话here。但是当我嘲笑一个班级时,我该如何解决呢?
【问题讨论】:
标签: typescript unit-testing jestjs ts-jest