【发布时间】:2020-10-09 04:58:21
【问题描述】:
我有一个普通的旧类,而不是一个组件,我想测试这个方法
static fromJson(json: any): ClientDTO {
const ret: ClientDTO = Object.assign(new ClientDTO(), json)
const dp = new DateWithoutTimePipe()
ret.contractStart = dp.transform(json.contractStart)
ret.contractEnd = dp.transform(json.contractEnd)
return ret
}
作为我的测试方法的一部分,我想验证是否使用预期的参数调用了转换方法。我想我需要某种类型的间谍,但因为 DateWithoutTimePipe 没有注入,我不确定如何在我的测试中伪造该类。
我最初尝试过以下方法,当然立即意识到该间谍从未真正使用过。
it('should decode dates', () => {
const spy = jasmine.createSpyObj('DateWithoutTimePipe', ['transform'])
const dates = {'contractStart': '2020-01-01', 'contractEnd': '2030-02-03'}
const dto = ClientDTO.fromJson(dates)
expect(dto).toBeInstanceOf(ClientDTO)
expect(spy.transform).toHaveBeenCalledTimes(2)
const all = spy.transform.calls.all()
expect(all[0].args).toBe(['2020-01-01'])
expect(all[1].args).toBe(['2030-02-03'])
})
【问题讨论】:
标签: typescript unit-testing jasmine angular-test