Я использую эти два отдельных утверждения в модульном тесте Жасмин.
expect(spyFunction).toHaveBeenCalledWith(expectedArgument);
expect(spyFunction).toHaveBeenCalledTimes(expectedCount);
Если я правильно понимаю, это подтвердит следующее.
- Функция вызывается с помощью
expectedArgument
хотя бы один раз и - Функция вызывается в общей сложности
expectedCount
раз.
Что я хочу сделать, это подтвердить, что функция вызывается с expectedArgument
ровно expectedCount
раз. Другими словами, я хочу считать только количество вызовов, в которых совпадает аргумент.
Я понимаю, что мог бы сделать свой собственный подсчет с фальшивкой ...
var callCount = 0;
spyOn(myInstance, 'myFunction').and.callFake(arg => {
if (arg === expectedArgument) {
callCount++;
}
});
...
expect(callCount).toEqual(expectedCount);
... но у этого нет читабельности предыдущего синтаксиса и похоже на изобретение колеса заново. Я не использовал Jasmine все это время, поэтому мне интересно, что я что-то упустил.
Есть ли способ сделать мое утверждение, используя встроенные сопоставители Jasmine? В качестве альтернативы, есть ли другой способ получить аналогично читаемый синтаксис?