1. ホーム
  2. javascript

[解決済み] JasmineによるAngularユニットテスト:spyOnを削除または修正する方法

2023-05-13 05:52:58

質問

アンギュラーJS v1.2.26

Jasmine 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);

          ...

        });
    });

...

2つ目のspyOnを削除すると、テストがうまくいきません。

どうすればいいのでしょうか?

どのように解決するのですか?

上書きすればよい

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