本文介绍了使用 Jasmine 进行 Angular 单元测试:如何删除或修改 spyOn的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

AngularJS v1.2.26

AngularJS v1.2.26

茉莉花 v2.2.0

如何更改或删除 spyOn 的行为?当我尝试覆盖它时,出现以下错误:Error: getUpdate has been spyed

How can I change or remove the behavior of a spyOn? When I try to override it, I get the following error: 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 时,测试不起作用.

When I remove the second spyOn the test doesn't work.

我该怎么做?

推荐答案

覆盖即可

updateService.getUpdate = jasmine.createSpy().and.returnValue(etc)

这篇关于使用 Jasmine 进行 Angular 单元测试:如何删除或修改 spyOn的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

08-18 12:26