gpt4 book ai didi

unit-testing - AngularJS - 具有值依赖注入(inject)的单元测试服务

转载 作者:行者123 更新时间:2023-12-05 00:30:26 25 4
gpt4 key购买 nike

我目前正在尝试使用 AngularJS。我创建了一个简单的服务,它是从一些遥远的数据初始化的。 url 作为应用程序值传递。

//App declaration
angular.module('myApp', ['myApp.services']).value('someUrl', 'http://www.example.com');

//Service declaration
angular.module('myApp.services', ['someUrl']).factory('MyService', function(someUrl) {
var data;
"Do stuff"
return data;
});

现在,我正在尝试对此进行单元测试,但我无法正确设置“someUrl”参数。我尝试过这样的事情,但没有成功:
angular.module('myApp', ['myApp.services']).value('someUrl', 'test/test.json');

describe('Services', function() {
beforeEach(module('myApp.services'));

describe('MyService', function() {
it('should return {success: true}', inject(function() {
expect(data).toEqual({success: true});
}));
});
});

但是,我总是收到“无模块:someUrl”错误。在单元测试期间初始化应用程序值的正确语法是什么?

最佳答案

您将值设置为“myApp”模块并正在测试“myApp.services”模块。您应该更改 module('myApp.services')module('myApp') .

无论如何,有一个更好的方法可以做到这一点。您可以使用模拟 module注入(inject)$provide所以你可以覆盖任何依赖。

这就是您的规范的样子:

describe('Services', function() {
// here we load the module myApp and load an additional one that
// allows you to override your dependency
beforeEach(module('myApp', function($provide) {
$provide.value('someUrl', 'test/test.json');
}));

describe('MyService', function() {
it('should return {success: true}', inject(function() {
expect(data).toEqual({success: true});
}));
});
});

关于unit-testing - AngularJS - 具有值依赖注入(inject)的单元测试服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16088567/

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