gpt4 book ai didi

javascript - 具有依赖关系的单元测试 Angular 服务

转载 作者:行者123 更新时间:2023-11-28 05:08:31 25 4
gpt4 key购买 nike

我有以下 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 blah\blah\blah.html $httpBackend 上没有更多请求 错误,但我不知道为什么,因为两者都不是此测试或服务依赖项对 $httpBackend 执行任何操作。

更多信息

如果我注释掉现有的 Controller 测试,我会收到此错误: service test only

如果我重新添加 Controller 测试,则会收到此错误: enter image description here

因此,根据我添加或删除的测试,GET 错误中的 HTML 文件会发生变化。但所有 Controller 测试都运行良好。 WTF?!?!?!!?!?!!?

最佳答案

该问题是由 Ionic 将所有模板预取到缓存中造成的。不知道为什么在测试 Controller 时不会发生这种情况。该问题仅在我测试服务时出现。无论如何,我找到了这个帖子:Karma test breaks after using ui-router相关的修复是在注入(inject)任何依赖项之前添加此代码片段:

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

这会删除 $ionicTemplateCache 并阻止它尝试将所有 ui-router 模板预加载到 Ionic 缓存中。

关于javascript - 具有依赖关系的单元测试 Angular 服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41559172/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com