Жасмин тест контекст на шпионин

Имам инсталиран jasmine spy на метод, който се нарича like

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

така че когато методът бъде извикан, ключовата дума this вътре в него ще бъде контекст. Как да тествам контекста на шпионина с Jasmine?


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

Харесвам отговора на Koen, но реших да го направя по-елегантен начин, използвайки персонализирани съвпадения. Ето библиотеката https://www.npmjs.com/package/jasmine-spy-matchers

С помощта на тази библиотека можете да направите следното:

expect(method).toHaveBeenCalledWithContext(context);

person Alexey Kucherenko    schedule 13.10.2017