javascript - Why isn't $digest updating my scope in my unit test -
i have following code. reason test 1 failing. can tell me why?
angular. module('mymodule', []). directive('mydirective', function () { return { restrict: 'e', scope: { myattr: '=' }, link: function (scope, element, attrs) { element.text(scope.myattr); } } }); describe('test', function () { var compile, rootscope; beforeeach(module('mymodule')); beforeeach(inject(function ($compile, $rootscope) { compile = $compile; rootscope = $rootscope; })); describe('test 1', function () { it('test', function () { scope = rootscope.$new(); // scope.myvar = "test"; element = compile('<my-directive my-attr="myvar" />')(scope); scope.$digest(); scope.myvar = "test"; scope.$digest(); expect(element.text()).tobe("test"); }); }); describe('test 2', function () { it('test', function () { scope = rootscope.$new(); scope.myvar = "test"; element = compile('<my-directive my-attr="myvar" />')(scope); scope.$digest(); scope.myvar = "test"; scope.$digest(); expect(element.text()).tobe("test"); }); }); });
element.text(scope.myattr);
needs wrapped in watch, so:
angular. module('mymodule', []). directive('mydirective', function () { return { restrict: 'e', scope: { myattr: '=' }, link: function (scope, element, attrs) { scope.$watch('myattr', function () { element.text(scope.myattr); }); } } });
Comments
Post a Comment