gpt4 book ai didi

unit-testing - 在 AngularJS 中对配置阶段进行单元测试

转载 作者:行者123 更新时间:2023-12-03 11:29:31 25 4
gpt4 key购买 nike

我正在尝试学习如何为 AngularJS 编写单元测试。我从一开始就用
angular.module( ... ).config( ... )
我想测试一下配置里面的内容。以下是相关部分的外观:

angular.module('ogApp', ['ngCookies','ui.router','ogControllers','ogServices','ogDirectives','ogMetricsData'])

.config([
'$stateProvider', '$locationProvider',
function ($stateProvider, $locationProvider) {
$stateProvider.
state('login', {
templateUrl: 'connect.html'
}).state('addViews', {
templateUrl: 'add-views.html'
}).state('dashboard', {
templateUrl: 'dashboard.html'
});
$locationProvider.
html5Mode(true).
hashPrefix('!');
}
]);

我认为测试此代码的最简单方法是为 $stateProvider 注入(inject)模拟。和 $locationProvider .然后执行配置阶段。之后,断言 $stateProvider$locationProvider应该看起来像。

如果我的想法是正确的,那么我的问题是,我不知道如何将这些模拟注入(inject)模块并从测试中执行其配置阶段。

你能告诉我如何测试这段代码吗?

最佳答案

以下是如何访问您的提供者进行单元测试:

describe('yourProvider', function () {
var provider;

// Get the provider
beforeEach(module('app', function (yourProvider) {
// This callback is only called during instantiation
provider = yourProvider;
});

// Kick off the above function
beforeEach(inject(function () {}));

it('does its thing', function () {
expect(provider.someMethod()).toEqual('your results');
});
});

我还没有想出一个非常简单的注入(inject)模拟的方法,但是你可以很容易地窥探方法,这已经足够接近了。如果您需要从依赖提供者的 .$get() 方法返回的模拟,您也可以使用另一个 spy 来执行此操作。这个例子说明了返回一个模拟和设置一个额外的 spy 。
describe('yourProvider', function () {
var dependency, mock, provider;

beforeEach(module('app', function (dependencyProvider) {
dependency = dependencyProvider;
mock = jasmine.createSpyObj('dependency', [
'methodsGoHere'
]);
spyOn(dependency, 'methodName');
spyOn(dependency, '$get').andReturn(mock);
}, function (yourProvider) {
provider = yourProvider;
});

beforeEach(inject(function () {}));

it('does its thing', function () {
expect(provider.someMethod()).toEqual('your results');
expect(dependency.methodName).toHaveBeenCalled();
});

it('returns the mock from $get', function () {
expect(dependency.$get).toBe(mock);
});
});

关于unit-testing - 在 AngularJS 中对配置阶段进行单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18983280/

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