需要Testacular Angular UI bootstrap'指令'

时间:2013-03-27 03:28:27

标签: angularjs angular-ui karma-runner

我正在尝试对使用Angular UI-Bootstrap对话框指令的控制器进行单元测试,但是收到错误:Argument'指令'是必需的错误。

只要我在Testacular配置中包含ui-bootstrap.min.js文件,就会发生这种情况。

控制器定义为:

angular.module('xFormsEntries')
    .controller('xFormsEntryListCtrl', function ($scope, $dialog, Form, FormEntry, FormField) {...

单元测试是:

describe('xForms Controllers', function() {

    beforeEach(function() {
        this.addMatchers({
            toEqualData: function(expected) {
                return angular.equals(this.actual, expected);
            }
        });
    });

    beforeEach(module('xFormsServices'));
    beforeEach(module('xFormsEntries'));

    describe('xFormsEntryListCtrl', function() {
        var scope, ctrl, $httpBackend, $dialog;
        var formData = {formId: 1, name: 'FormName'};

        apiURL = ''; // Override the global API URL

        beforeEach(inject(function(_$httpBackend_, $rootScope, $controller, _$dialog_) {
            // Arrange
            $httpBackend = _$httpBackend_;
            $httpBackend.expectGET('/xFormsAPI/Form').respond(formData);

            $dialog = _$dialog_;

            scope = $rootScope.$new();
            scope.formId = 1;
            ctrl = $controller('xFormsEntryListCtrl', {$scope: scope});
        }));

        it('should fetch the form from the server', function () {
            expect(scope.formModel).toBe(undefined);
            $httpBackend.flush();
            expect(scope.formModel).toEqualData(formData);
        });
});

在集成UI-Bootstrap之前,所有测试都已通过。

我尝试将beforeEach(module('ui.bootstrap'));和其他变体添加到测试中,但没有运气。

我缺少什么神奇的功能才能使这项工作成功?

1 个答案:

答案 0 :(得分:0)

您是否包含依赖项以及实际的js文件?

安装 只要您下载了所有文件并将其包含在页面中,您就需要声明对ui.bootstrap模块的依赖:

angular.module('myModule', ['ui.bootstrap']);