Я использую Karma + Jasmine для проверки своих директив AngularJS, я написал более 300 тестов, и я был очень доволен ... пока не нашел проблему, которая привела меня сюда, потому что я «m stuck: некоторые тесты терпят неудачу, потому что им нужен CSS, применяемый к некоторым элементам (часть кода в моей директиве делает вычисление размера на основе этого стиля), и, несмотря на то, что я добавил файл, содержащий реализацию CSS, этот файл кажется проигнорированным во время испытаний. В моей карме конфигурации я добавил файл CSS следующим образом:Тесты с CSS-выпуском AngularJS с кармой + Жасмин
files: [
// ..
'styles/foo.css',
// ..
],
вышеуказанные параметры генерирует ссылку тег в body
, а не head
, поэтому я попытался впрыснуть CSS «вручную» с помощью JS:
angular.element(document).find('head').prepend(
'<style type="text/css">@charset "UTF-8";' +
'/* THE STYLE I NEED FOR MY TESTS HERE */' +
'</style>'
);
, но ни один из этих методов не работает (я тестировал, и тег стиля вводится правильно). Я, наконец, попытался добавить блок стиля среди HTML, который я компилирую с помощью углового $compile
:
var element = ng.element('<div>' +
'<style type="text/css">@charset "UTF-8";' +
'/* THE STYLE I NEED FOR MY TESTS HERE */' +
'</style>' +
'<my-directive></my-directive>' +
+ '</div>');
$compile(element)(scope);
... но до сих пор не повезло ... Я также попытался переключить тест бегун из PhantomJS в Chrome, но проблема та же: стили, так или иначе игнорируются (они вводятся, но они не получают применяется к элементам, на самом деле, используя jQuery(targetElement).css('width')
возвращает 0) ...
так, мой большой вопрос: как мне импортировать и успешно применять таблицу стилей в тестах кармы ??? :(
Я настоятельно советую для добавления послеEach (функция() { элемент.remove() }) при добавлении элемента к DOM в ваши тесты. Когда у вас тысячи тестов, они будут очень медленными, и у вас также могут быть конфликты с предыдущими тестами. – ValentinH