AngularJS v1.2.26Угловая модульное тестирование с Жасмин: как удалить или изменить spyOn
Жасмин v2.2.0
Как я могу изменить или удалить поведение spyOn
? Когда я пытаюсь изменить его, я получаю следующее сообщение об ошибке: Error: getUpdate has already been spied upon
var data1 = 'foo';
var data2 = 'bar';
describe("a spec with a spy", function(){
beforeEach(module('app'));
var $q;
beforeEach(inject(function(_updateService_, _$q_){
updateService = _updateService_;
//spy the results of the getUpdate()
$q = _$q_;
var deferred = $q.defer();
deferred.resolve(data1);
spyOn(updateService, 'getUpdate').and.returnValue(deferred.promise);
}));
describe('and here the spy should be different', function() {
it('returns a different value', function() {
var deferred = $q.defer();
deferred.resolve(data2);
spyOn(updateService, 'getUpdate'); //ERROR HERE
updateService.getUpdate.and.returnValue(deferred.promise);
...
});
});
...
Когда я удалить второй spyOn тест не работает.
Как это сделать?
Есть ли способ, чтобы удалить шпиона полностью? Чтобы вернуться к исходной функции? – emersonthis
Большой вопрос: если у вас нет одинаковой функциональности в каждом тесте, зачем вообще глобальный шпион? Если вы хотите установить шпион для каждого теста, установите шпион для каждого теста. – Jan
@Jan Если у меня пятьдесят тестов, и только один из них имеет шпион для функции, отличной от остальных, я бы скорее просто изменил ее один раз там, а не каждый тест. – theblang