Кто-нибудь знает, как получить безглавой браузер, такой как Chutzpah Visual Studio Test Adapter, чтобы разрешить доступ к его файлу-шаблону .html? Chutzpah использует PhantomJS для безгласного браузера, который, как представляется, ограничивает мои параметры.
Я использую Chutzpah Test Adapter 2.5 и AngularJS 1.2.0-r.2.
Я получаю сообщение об ошибке:
Неожиданный запрос: GET myApp/директивы/template.html
Что вызвано Angular попыткой использовать службу $http для доступа к моему шаблону директивы.
Я нашел несколько разных обходных решений:
- Вручную использовать XMLHttpRequest для импорта шаблонов.
- Использование утилиты, такой как Grunt, для вставки шаблона в ваш JS-код директивы.
-
$httpBackend.when('GET', 'myApp/directives/template.html').passThrough()
- это работает только в тестах e2e, а не в модульных тестах. - Поместите шаблон непосредственно в тестовый код.
Ни один из этих вариантов не удовлетворяет меня. Я бы предпочел, чтобы позволить директиве загружать свой шаблон прозрачно, чтобы я мог проверить его как компонент. Есть ли способ заставить этот сценарий работать?
Пример кода:
angular.module('myDirective', []).directive('myDirective', function() {
return {
restrict: 'E',
transclude: true,
templateUrl: 'myApp/directives/template.html',
// Some other options, omitted for brevity.
};
});
template.html:
<div><div ng-transclude></div></div>
Пример теста на жасмин:
describe('myDirective', function() {
// Assign $scope using inject(), load module etc.
// Insert workaround for $httpBackend loading my templateUrl here.
it('should transclude content', function() {
var element = $compile("<my-directive>Look Mom, I'm in my directive!</my-directive>")($scope);
$scope.$digest();
expect(element.text().trim()).toBe("Look Mom, I'm in my directive!");
});
}