Próbuję napisać test jednostkowy dla komponentu w Angular 1.5. Chcę przetestować ten komponent i jego węzły domena. Ten komponent zawiera komponent potomny, który jest dość złożony.Moduł testujący Angular 1.5 podczas ignorowania komponentów potomnych
Moim celem jest przetestowanie komponentu zewnętrznego bez kompilacji komponentu potomnego.
Ponieważ chcę przetestować DOM, nie wystarczy użyć $ componentController dla tego testu.
Oto krótki przykład tego, co chciałbym osiągnąć:
kod Składnik:
angular.module('app').component('myComponent', {
bindings: {
username: '<',
},
template: `
<span>{{ $ctrl.username }}</span>
<my-complex-component />
`
controller: function() {}
});
testów jednostkowych dla mojego składnika:
it('my-component should render username', function() {
var template = '<my-component username="username"></my-component>',
element,
scope,
date;
scope = $rootScope.$new();
scope.username = 'John';
element = $compile(template)(scope);
scope.$digest();
username = element.find('span');
expect(username.text()).to.be.equal('John');
});
mój kompleks-komponentowego nie należy tworzyć instancji. Powinien stawić opór w szablonie takim jaki jest. Utworzenie elementu w teście jednostkowym powinno skutkować tym, że jest jakiś sposób to zrobić.
Jak wiem, działa dokładnie tak, jak się spodziewałeś. Podczas kompilowania komponentu nie kompiluje się komponentów wewnętrznych. Wystarczy spojrzeć na 'console.log (element)'. –
Niestety, mój-komponent i mój-złożony-składnik znajdują się w module aplikacji. Ponieważ muszę wywoływać angular.mock.module ("app") w celu wyśmiewania modułu, ładuje on oba komponenty i próbuje skompilować również mój złożony komponent. –
możesz spróbować i wyśmiewać 'mój-złożony-komponent'. Zobacz [tę odpowiedź] (http://stackoverflow.com/questions/17533052/how-do-you-mock-directives-to-enable-unit-testing-of-higher-level-directive#answer-21923462) na szyderstwie dyrektywy, ale użyj [$ compileProvider.component] (https://docs.angularjs.org/api/ng/provider/$compileProvider#component) zamiast – user2718281