Я пытаюсь протестировать ng-if в одном из моих шаблонов, компилируя представление против предварительно заданной области и запуская $scope. $digest.
Я нахожу, что скомпилированный шаблон выходит одинаково независимо от того, является ли мое условие правдивым или ложным. Я ожидаю, что скомпилированный html удалит элементы ng-if dom при ложности.
beforeEach(module('templates'));
beforeEach(inject(function($injector, $rootScope){
$compile = $injector.get('$compile');
$templateCache = $injector.get('$templateCache');
$scope = $rootScope.$new();
template = angular.element($templateCache.get('myTemplate.tpl.html'));
}));
afterEach(function(){
$templateCache.removeAll();
});
it ('my test', function(){
$scope.myCondition = true;
$compile(template)($scope);
$scope.$digest();
expect(template.text()).toContain("my dom text");
// true and false conditions both have the same effect
});
Здесь plunkr пытается показать, что происходит (не уверен, как тестировать в plunkr, поэтому я сделал это в контроллере) http://plnkr.co/edit/Kjg8ZRzKtIlhwDWgB01R?p=preview