나는 AngularJS 지시문을 테스트하기 위해 Karma + Jasmine을 사용하고 있으며 300 개가 넘는 테스트를 작성했으며 매우 행복했습니다. 일부 테스트는 실패했습니다. 일부 요소에 적용된 CSS가 필요하기 때문입니다. (내 지시문의 코드 조각은이 스타일을 기반으로 한 크기 계산을 수행합니다) CSS 구현을 포함하는 파일을 추가 했음에도 불구하고이 파일은 무시 된 것처럼 보입니다. 테스트 중. 내 카르마 설정에서 내가 이런 식으로 CSS 파일 추가 :카르마 + 재스민을 사용한 AngularJS 지시문 테스트
files: [
// ..
'styles/foo.css',
// ..
],
위의 설정이 body
오히려 head
이외의 링크 태그를 생성을, 그래서 나는 JS를 사용하여 "수동"는 CSS를 주입하려고 :
angular.element(document).find('head').prepend(
'<style type="text/css">@charset "UTF-8";' +
'/* THE STYLE I NEED FOR MY TESTS HERE */' +
'</style>'
);
하지만이 방법은 효과가없는 것으로 나타났습니다 (테스트 한 결과 스타일 태그가 올바르게 주입 됨). 나는 마침내 내가 각도 $compile
를 사용하여 컴파일 HTML 사이 스타일의 블록을 추가하려고 :
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을까지 테스트 러너를 전환 시도 크롬,하지만 문제는 동일합니다 : 스타일을 어떻게 든 (가 주입되어 있지만, 그것은 0을 반환 jQuery(targetElement).css('width')
를 사용하여 사실, 요소에 적용되지 않는) 무시됩니다 ...
그래서, 내 큰 질문 : 카르마 테스트에서 스타일 시트를 가져와 성공적으로 적용해야합니까 ??? :
afterEach (function() { 요소를 추가하십시오.remove() } 테스트에서 DOM에 요소를 추가 할 때. 수천 번의 테스트를 거친다면 그들은 매우 느리게 진행될 것이며 이전 테스트와 충돌 할 수도 있습니다. – ValentinH