Jasmine,Angular和Resharper:在单元测试中注入控制器时遇到问题

时间:2015-07-29 18:32:26

标签: angularjs jasmine resharper

我无法将角度控制器注入我的jasmine规范文件中。错误以http://errors.angularjs.org/1.3.3/$injector/modulerr...

开头

我正在使用Visual Studio 2013和Resharper 8.2.3。以下是相关摘录:

茉莉

///<reference path="~/Scripts/jasmine/jasmine.js"/>
///<reference path="~/Scripts/jasmine/jasmine-html.js"/>
///<reference path="~/Scripts/jasmine/boot.js"/>
///<reference path="~/Scripts/angular-core/angular.min.js"/>
/// <reference path="~/Scripts/angular-core/angular-mocks.js" />

/// <reference path="~/Scripts/angular-controllers/FormsAdminSecurityAccountAdmin.js" />

describe("Sec Acct Admin Controller", function () {
    var $controllerConstructor, scope, ctrl;

    beforeEach(module('accounts'));
    beforeEach(inject(function($rootScope, $controller) {
        scope = $rootScope.$new();
        $controllerConstructor = $controller;
        ctrl = $controllerConstructor('accountsCtrl', { $scope: scope });
    }));

    it("the controller is present", function () {
        expect(ctrl).toBeDefined();
    });
});

angular.module('accounts', ['cocUtilities', 'angucomplete-alt', 'ui.date', 'ui.grid', 'ui.grid.pinning', 'ui.grid.pagination', 'ui.grid.resizeColumns', 'ui.grid.moveColumns']);

angular.module('accounts').config(['$locationProvider', function ($locationProvider) {      // Allows $location to parse the arguments to a URL
    $locationProvider.html5Mode({enabled: true, requireBase: false});
}]);

angular.module('accounts').controller('accountsCtrl', ['$scope', '$window', '$location', 'dataFactory', 'cccsLookupForAccounts', 'uiGridConstants', function ($scope, $window, $location, dataFactory, cccsLookupForAccounts, uiGridConstants) { ... }

最后,我能够使用测试规范和角度文件来获得这个的简化版本。问题似乎是注入这个特定的模块/控制器,但我还没有找到问题。如果您能提供任何帮助,我将不胜感激。谢谢!

1 个答案:

答案 0 :(得分:0)

事实证明,我没有在spec文件的顶部包含所需的文件。我尝试测试的模块有依赖项,测试运行器找不到它们,因为我没有为具有依赖项的文件包含正确的<reference path=...。当我添加它们时,它起作用了。