gpt4 book ai didi

angularjs - 如何在测试自定义 AngularJS 提供程序时注入(inject) $window?

转载 作者:行者123 更新时间:2023-12-01 12:42:37 26 4
gpt4 key购买 nike

我需要对覆盖 $windowProvider 的自定义提供程序进行单元测试。

提供者.js

angular
.module('customProvider', [])

.provider('cprovider', [
'$windowProvider',
function ($windowProvider) {
var $window = $windowProvider.$get();

var platform = function () {
// some code there use $window
};

this.platform = platform;

this.$get = function () {
return {
platform: platform
};
};
}
]);

cprovider.spec.js

describe('cprovider', function () {
var cprovider, mockWindow;

describe("xxxx", function () {
beforeEach(function () {
mockWindow = {navigator: {userAgent: 'xxxx'}};


module('customProvider', function ($provide) {
$provide.value('$window', 'mockWindow');
});

inject(function (_cprovider_) {
cprovider = _cprovider_;
});
});

it('should something', function () {
// Arrange and Act in beforeEach.

// Assert. WON'T WORK
expect(cprovider.platform()).toBe('xxx');
});
});
});

无法正确模拟 $windowProvider。任何人都知道我该怎么做?

最佳答案

你可以监视 $window:

beforeEach(function () {
angular.mock.module('customProvider');
inject(function (_$window_, _cprovider_) {
cprovider = _cprovider_;
$window = _$window_;
spyOn($window, 'alert');
});
});

完整的 fiddle here

关于angularjs - 如何在测试自定义 AngularJS 提供程序时注入(inject) $window?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22817188/

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