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 2015-03-04 19:52:31
最大的問題是,如果你在每個測試中都沒有相同的功能,爲什麼要有全球間諜呢?如果你想爲每個測試設置一個間諜,那麼爲每個測試設置一個間諜。 – Jan 2015-07-06 21:07:56
@Jan如果我有五十個測試,並且只有其中一個人有一個與其他人不同的功能的間諜,我寧願只改變一次,而不是每一次測試。 – theblang 2016-05-18 19:57:27