Ответ 1
Я дам вам два ответа на ваш вопрос:
Сначала: Тестирование привязок в вашем представлении, вероятно, должно выполняться в результате сквозного теста (E2E). И тест конца в конец используется, чтобы убедиться, что контроллеры, модели и представления работают вместе, как ожидалось, наряду с правильной интеграцией вашего бэкэнда (если он у вас есть). Здесь вы должны проверить, что данный div
имеет ожидаемый текст. Вы можете прочитать все об этом в руководстве разработчика здесь. Причина, по которой вы используете тест E2E для этого, заключается в том, что привязка не является действительно ответственностью вашего контроллера. Контроллер управляет/управляет моделью. Затем модель передается в представление, и теперь это ответственность за визуализацию элементов DOM, использующих эту модель. Единственный надежный способ протестировать ваши элементы DOM - это тест E2E.
Второе: На самом деле это можно сделать в unit test, но способ сделать это не совсем красиво. Вы можете сделать это, используя службу angular $compile
. Эта услуга - это то, что angular использует для анализа через DOM и превращает все привязки/директивы/etc в конечный продукт. Вот пример того, как это будет сделано:
var scope, compile, elem;
beforeEach(inject(function ($controller, $rootScope, $compile) {
scope = $rootScope.$new();
compile = $compile;
MainCtrl = $controller('myCtrl', {
$scope: scope
});
}));
it('should set the div content to "' + scope.text + '"', function(){
var html = '<div id="text">{{ text }}</div>';
elem = angular.element(html); // turn html into an element object
compile(elem)(scope); // compile the html
scope.$digest(); // update the scope
expect(elem.text()).toBe(scope.text); //test to see if it was updated.
});
Дополнительную информацию об этом втором варианте см. в подробном учебнике здесь. Надеюсь, что это поможет.