ts-mockito
ts-mockito copied to clipboard
verify() is not able to verify arguments except for the last call
Description:
export enum Status {
NEW = 'NEW',
UPDATED = 'UPDATED',
COMPLETED = 'COMPLETED'
}
export class Record {
key: string;
createdAt: Date;
status: Status
}
async saveRecord(record: Record): Promise<Record> {
return this.put(record)
};
Now, in my code , I have the something similar to:
saveRecord(key: abc, status: Status.NEW)
...
saveRecord(key: abc, status: Status.UPDATED)
While in test, I am verifying using:
verify(mockRepository.saveRecord(objectContaining({abc, status: Status.NEW}))).once()
verify(mockRepository.saveRecord(objectContaining({abc, status: Status.UPDATED}))).once()
It doesn't work
while :
verify(mockRepository.saveRecord( objectContaining({abc, status: Status.UPDATED}))).times(2) //does work
I have debugged my current flow and I am sure, both the status updates are called ones
Sadly, mock is updated to capture arguments only for the last call, and all history before that is lost.
P.S: The record object in my implementation has some autogenerated fields, which is why I am using objectContaining()
You can use capture
as a work-around.