【问题标题】:spyOn could not find an object to spy upon for all()spyOn 找不到一个对象来监视 all()
【发布时间】:2015-07-31 05:55:27
【问题描述】:

当我想模拟使用 Restangular 创建的 http REST 服务时出现上述错误。 这是我的一段代码:

var someParameter = [{ "id": 1, "name": "Length" }]
   spyOn(Restangular, 'one').and.callThrough();
    it('expect company service to be called', function () {     
        httpBackend.expectGET('http://localhost:8283/com/companies', {
            someParameter: someParameter
        }).respond(mockToReturn);
    });

有没有人遇到过同样的问题,有什么解决办法吗?

【问题讨论】:

    标签: angularjs jasmine karma-jasmine jasmine-jquery


    【解决方案1】:

    我就是这样做的,希望对你有帮助。

    var Restangular;
    beforeEach(inject(function( _Restangular_) {
        Restangular = _Restangular_;
        spyOn(Restangular, 'all').and.callThrough();
    }));
    

    【讨论】:

    • 尝试使用 inject 并且几乎无法调试,因为没有解释它是什么或为什么要使用它。
    【解决方案2】:

    在我看来,您应该在传递给“it”的函数内部调用 spyOn

    var someParameter = [{ "id": 1, "name": "Length" }]
    it('expect company service to be called', function () {
      spyOn(Restangular, 'one').and.callThrough();
      httpBackend.expectGET('http://localhost:8283/com/companies', {
        someParameter: someParameter
      }).respond(mockToReturn);
    });
    

    【讨论】:

    • 不,间谍应该添加到beforeEach
    猜你喜欢
    • 1970-01-01
    • 2017-11-30
    • 2020-08-30
    • 2017-02-27
    • 2019-02-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-22
    相关资源
    最近更新 更多