Подтвердить что ты не робот

Жасмин toHaveBeenCalled с частичным согласованием

С Жасмином я мог следить за методами и выяснять аргументы. Я хочу иметь возможность называть toHaveBeenCalledWith(something, anything).

Скажем, я хочу подсмотреть метод .on(event, callback). Все, о чем я забочусь, - это если прослушивается event, а не фактический идентификатор обратного вызова. Можно ли это сделать без написания пользовательского совпадения? Я не вижу этого.

4b9b3361

Ответ 1

Try

toHaveBeenCalledWith(jasmine.any(Object), jasmine.any(Function))

Ответ 2

Если вы хотите проверить конкретные вещи, вы можете сделать что-то вроде:

expect(mockSomething.someMethod.mostRecentCall.args[0].pool.maxSockets).toEqual(50);

Синтаксис в Жасмин 2 теперь такой:

mockSomething.someMethod.calls.mostRecent().args[0]

Ответ 4

FWIW, jasmine.any(Object) в соответствии с предложением beautifulcoder и jasmine.anything() в соответствии с предложением John Neuhaus не работает, если будет передано undefined.

Конечно, мои тесты будут проходить undefined или Object, поэтому я не могу использовать ни одно из этих решений. Спасибо за совет, хотя!