У меня есть простой старый класс, а не компонент, с этим методом, который я хочу протестировать
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'])
})