单元测试 – 单位测试AngularJS中的配置阶段

前端之家收集整理的这篇文章主要介绍了单元测试 – 单位测试AngularJS中的配置阶段前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在尝试学习如何为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和$ locationProvider注入mocks。然后执行配置阶段。之后,断言$ stateProvider和$ locationProvider应该如何。

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

你能告诉我如何测试这个代码

以下是访问您的提供商进行单元测试的方法
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');
    });
});

我还没有想出一个非常简单的注入模拟的方法,但是你可以轻松地窥探方法,而且足够近。如果您需要从依赖提供者的$ get()方法返回的模拟,那么您可以使用另一个间谍来执行此操作。此示例说明返回模拟并设置其他间谍。

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);
    });
});
原文链接:https://www.f2er.com/angularjs/144958.html

猜你在找的Angularjs相关文章