Javascript 使用隔离范围测试AngularJS指令
我试图理解如何为指令编写规范,尤其是如何访问隔离作用域方法和属性。我已经做了一上午了,还有一些事情我不明白。以下是我为设置测试套件所做的主要工作: 1.使用我将传递给指令的属性创建一个作用域 2.使用此范围编译指令, 4.对这个隔离作用域包含的内容进行一些测试。 但是,即使我可以检索隔离的作用域,这个作用域也不会显示它应该具有的任何属性(例如,我在指令的Javascript 使用隔离范围测试AngularJS指令,javascript,angularjs,karma-runner,Javascript,Angularjs,Karma Runner,我试图理解如何为指令编写规范,尤其是如何访问隔离作用域方法和属性。我已经做了一上午了,还有一些事情我不明白。以下是我为设置测试套件所做的主要工作: 1.使用我将传递给指令的属性创建一个作用域 2.使用此范围编译指令, 4.对这个隔离作用域包含的内容进行一些测试。 但是,即使我可以检索隔离的作用域,这个作用域也不会显示它应该具有的任何属性(例如,我在指令的link方法中声明的方法)。它只显示指令参数,而不显示内部的方法和属性,就像它应该显示的那样 如果你们有线索的话。。今天我读了很多关于这方面的文
link
方法中声明的方法)。它只显示指令参数,而不显示内部的方法和属性,就像它应该显示的那样
如果你们有线索的话。。今天我读了很多关于这方面的文章,将我的代码与博客帖子上的代码进行了比较,看不出我做错了什么 您想要一个子作用域(继承父作用域的内容)还是一个独立的作用域?您能告诉我们您的指令吗?您是否像这样指定了scope属性:
scope:{param:'='}
以隔离您的作用域?@JossefHarush我有一个隔离的作用域。我想在我的因果报应规范中测试它的内容。@Freezystem你看过plunkr吗?@PA.Buisson的方向正确吗?
var scope = $rootScope.$new();
scope.daParam = "param handed to the directive";
element = $compile( "<my-directive param='daParam'></my-directive>" )( scope );
scope.$digest();
isolateScope = element.isolateScope();
describe("compilation results", function()
{
it("has the outer directive param", function() {
// Pass
expect( isolateScope.param ).toBeDefined();
});
it("has the inner scope methods", function() {
// Doesn't pass
expect( isolateScope.myMethod ).toBeDefined();
});
});