javascript - 使用 Jasmine : how to remove or modify spyOn 进行 Angular 单元测试

标签 javascript angularjs unit-testing jasmine karma-jasmine

AngularJS v1.2.26

Jasmine v2.2.0

如何更改或删除 spyOn 的行为?当我尝试覆盖它时,出现以下错误:Error: getUpdate has already been spired 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 时,测试不起作用。

我该怎么做?

最佳答案

你可以覆盖它

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

关于javascript - 使用 Jasmine : how to remove or modify spyOn 进行 Angular 单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28821511/

相关文章:

AngularJS - 两种方式绑定(bind)无法使用服务工作

python - 如何从 "python setup.py test"运行 unittest discover ?

swift - 如何检查单元测试中是否释放了无主引用?

javascript - 如何通过 JavaScript 选择一行的单元格并获取它们的值?

javascript - Reactjs 不渲染表中的数据

javascript - javascript 中的可重排 DIV(jQuery 插件)

javascript - 使用 JavaScript/AngularJS/CSS 将 Div 高度设置为等于页面高度

javascript - 将 @font-face 样式表规则添加到 chrome 扩展

angularjs - 等待设置ng-init值的正确方法是什么?

java - 如何使用内存数据库编写测试用例?