【发布时间】:2020-06-21 18:55:28
【问题描述】:
我有两个模拟简单求和运算的类。
import SumProcessor from "./SumProcessor";
class Calculator {
constructor(private _processor: SumProcessor) { }
sum(a: number, b: number): number {
return this._processor.sum(a, b)
}
}
export default Calculator
还有运算处理器。
class SumProcessor {
sum(a: number, b: number): number {
return a + b
}
static log() {
console.log('houston...')
}
}
export default SumProcessor
我正在尝试模拟 SumProcessor 类以使用 jest+ts-jest 编写以下单元测试。
import Calculator from "./Calculator"
import SumProcessor from "./SumProcessor"
import { mocked } from "ts-jest/utils"
jest.mock('./SumProcessor')
describe('Calculator', () => {
it('test sum', () => {
const SomadorMock = <jest.Mock>(SumProcessor)
SomadorMock.mockImplementation(() => {
return {
sum: () => 2
}
})
const somador = new SomadorMock()
const calc = new Calculator(somador)
expect(calc.sum(1, 1)).toBe(2)
})
})
当 SumProcessor 类中存在静态方法时,模拟代码 const SomadorMock = (SumProcessor) 表示以下编译错误:
TS2345: Argument of type '() => jest.Mock<any, any>' is not assignable to parameter of type '(values?: object, option
s?: BuildOptions) => SumOperator'.
Type 'Mock<any, any>' is missing the following properties from type 'SumOperator...
如果从 SumProcessor 类中删除静态方法,则一切正常。
有人可以帮忙吗?
【问题讨论】:
标签: node.js typescript testing jestjs ts-jest