具有 [^form] 依赖性的 Jasmine 测试 angular 指令

Jasmine Testing angular directive with [^form] dependency

我正在尝试测试一个指令,如解释的那样。这里 http://angular-tips.com/blog/2014/06/introduction-to-unit-test-directives/.

然而,在我的指令中我使用了表单,所以我在我的指令声明对象中有这个:

        return {
            link: link,
            restrict: 'E',
            require: ['^form'], // <- I have this !!
            scope: { //...
            },
            controller: function ($scope) {
            //...
            }
        };

因此,当我执行 Jasmine 测试的通常先决条件时

element = '<mydirective/>';
element = $compile(element)(scope);

我在尝试 运行 karma / Jasmine 测试时遇到以下依赖性问题:

错误:[$compile:ctreq] 控制器 'form',指令 'mydirective' 所需,找不到! http://errors.angularjs.org/1.4.2/$compile/ctreq?p0=form&p1=mydirective

如何解决这个问题?

使用

'<form><mydirective></mydirective></form>'

,并使用 element.find('mydirective') 查找实际指令元素。