Jasmine test контекст шпиона

У меня есть жасминовый шпион, установленный в методе, который называется как

if(typeof method === 'function'){
  var context = {a:'b'};
  method.call(context);
}

чтобы при вызове метода ключевое слово this внутри него было контекстом. Как мне проверить контекст шпиона с Жасмин?


person zavr    schedule 31.12.2015    source источник


Ответы (2)


Контекст вызова находится в свойстве object каждого объекта вызовов.

Так дано

var method = jasmine.createSpy();
var context = {a:'b'};
method.call(context);

Вы можете проверить контекст вызова вашего шпионского метода следующим образом:

mostRecentCall = method.calls.mostRecent();
expect(mostRecentCall.object).toEqual(context);

Проверьте здесь, чтобы найти дополнительные примеры в документации jasmine.

person Raymundus    schedule 20.07.2016

Мне нравится ответ Коэна, но я решил сделать его более элегантным, используя пользовательские сопоставители. Вот библиотека https://www.npmjs.com/package/jasmine-spy-matchers

Используя эту библиотеку, вы можете сделать следующее:

expect(method).toHaveBeenCalledWithContext(context);

person Alexey Kucherenko    schedule 13.10.2017