현재 페이지의 메타 정보를 업데이트하는 서비스에 대한 테스트를 작성하고 있습니다.
mod.service('MetaSrv', ['$rootScope', '$rootElement', function ($rootScope, $rootElement){
return {
updateMetaTitle: function(contents) {
$rootScope.metaTitle = contents;
},
updateMetaElement: function(type, contents) {
var metaEl = angular.element($rootElement.find('meta[name="'+ type +'"]')[0]);
metaEl.attr('content', contents);
}
};
}]);
이러한 각 기능을 시작점으로 테스트하고 싶습니다. 테스트는 다음과 같다 :
describe('sets', function() {
it('meta title element using $rootscope', function() {
MetaSrv.updateMetaTitle('Some Title');
expect(scope.metaTitle).toBe('Some Title');
});
it('meta description element using $rootElement', function() {
MetaSrv.updateMetaElement('description', 'Some Description');
var el = angular.element(rootElement.find('meta[name="description"]')[0]);
expect(el.attr('content')).toBe('Some Description');
});
});
내가 두 번째 테스트에 대한 $rootElement
에 액세스해야합니다 후 첫 번째 테스트에 대한 $rootScope
를 사용할 수 있어야합니다. 설명 블록은 다음과 같습니다.
var MetaSrv, scope, rootElement, element;
beforeEach(function() {
module('mod');
inject(function (_MetaSrv_, $rootScope, $rootElement) {
MetaSrv = _MetaSrv_;
scope = $rootScope.$new();
rootElement = $rootElement;
});
});
현재 첫 번째 테스트는 정상적으로 작동합니다. $rootElement
을 사용하는 두 번째 테스트가 올바르게 작동하지 않으며 $rootElement
에 메타 태그를 찾을 수 없습니다. 메타 정보 변경을 테스트하기 위해 $rootElement
의존성을 조롱하는 방법을 모르겠습니다. 이는 업데이트되는