2

Angular UI-Bootstrap ダイアログ ディレクティブを使用するコントローラーを単体テストしようとしていますが、エラーが発生しています: Argument 'directive' is requiredエラーです。

ui-bootstrap.min.jsこれは、Testacular 構成にファイルを含めるとすぐに実際に発生します。

コントローラーは次のように定義されます。

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'));やその他のバリエーションをテストに追加しようとしましたが、うまくいきませんでした。

この作業を行うために欠けている魔法は何ですか?

4

1 に答える 1

0

依存関係と実際の js ファイルを含めましたか?

インストール すべてのファイルをダウンロードしてページに含めたらすぐに、ui.bootstrap モジュールへの依存関係を宣言する必要があります。

angular.module('myModule', ['ui.bootstrap']);
于 2013-05-25T17:59:56.753 に答える