在jasmine中进行测试时,我正在尝试使用 **我的自定义角度指令** 访问范围。
app.directive('MyDirective', function(){
return {
template:...,
scope:...,
controller: function($scope){
$scope.clickMe = function() {
....
};
$scope.message = "";
}
}
我想在茉莉花中编写一个测试来验证是否定义了clickMe方法。
it('should have 3 methods', function() {
expect(dscope).not.toBe(null);
expect(scope).not.toBe(null);
expect(angular.isFunction(dscope.clickMe)).toBe(true);
expect(dscope.message).toBe(true); }
在beforeEach()中,我将范围和dscope变量声明如下:
beforeEach(inject(function( $rootScope, $compile){
scope = $rootScope.$new();
element = angular.element("<div my-directive></div>");
//bind the empty scope into the directive
$compile(element)(scope);
//access to internal directive scope of our element
dscope = element.scope(); }));
但是当我运行测试时,我得到“期望false为真。”* 并且期望undefined对于scope.message不为null
答案 0 :(得分:17)
如果您使用的是Angular 1.2+,则必须使用...
dscope = element.isolateScope();
而不是......
dscope = element.scope();
访问隔离的范围。我无法判断你的范围是否被孤立,因为你在问题中省略了你的指令的范围声明,但我想象这里发生了什么。
请参阅Github上的this问题,了解.scope()和.isolateScope()之间区别的解释