单元测试依赖关系的角度服务

我有以下Jasmine单元测试:

describe('myService', function () {
    var myService, $q;

    // Instantiate the app
    beforeEach(module('myApp'));

    beforeEach(inject(function (_myService_, fileSystemService, $q) {
        myService = _myService_;
        spyOn(fileSystemService, 'listFiles').and.callFake(function () {
            var deferred = $q.defer();
            deferred.resolve('mockresult');
            return deferred.promise;
        });
    }));

    it('checks the number of outbound files', inject(function ($rootScope) {
        var result;
        myService.sendOutboundFiles2().then(function (res) {
            result = res;
        });
        $rootScope.$digest();
        expect(result).toBe('mockresult');
    }));
});

哪个测试这个非常简单的服务功能:

sendOutboundFiles2() {
     return fileSystemService.listFiles('Cached/Outbound').then(function(outfiles) {
         return outfiles;
     })
}

但是,当测试运行时,它会失败,并产生一个Error: Unexpected request: GET blahblahblah.html No more request expected at $httpBackend错误,但我不知道为什么这个测试也没有服务依赖关系做$ httpBackend。

更多信息

如果我注释掉我现有的控制器测试,我得到这个错误:

如果我添加我的控制器测试,我得到这个错误: 在这里输入图像描述

因此,根据我添加或删除哪些测试, GET错误中的HTML文件将发生更改。 但所有的控制器测试运行良好。 WTF?!?!?!??!?!?


这个问题是由Ionic热衷于将所有模板预取到缓存中造成的。 不知道为什么测试控制器时不会发生这种情况。 这个问题仅在我测试服务时出现。 任何方式,我发现这个线程:Karma测试在使用ui-router后中断,相关的修复是在注入任何依赖之前添加这个片段:

  beforeEach(module(function($provide) {
    $provide.value('$ionicTemplateCache', function(){} );
  }));

这留下了$ ionicTemplateCache,并防止它尝试将所有ui路由器模板预加载到Ionic缓存中。

链接地址: http://www.djcxy.com/p/73389.html

上一篇: Unit testing angular service with dependencies

下一篇: How can I investigate non