Skip to content

verify() is not able to verify arguments except for the last call #217

@subodhkarwa

Description

@subodhkarwa

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()

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions