Следующее, что вы видите в документах и исходном коде репо, не так уж сложно. Вот настройка, которую я создал, и она работает.
Первый из Документов я взял жасмин пример настройки
<link rel="stylesheet" href="node_modules/jasmine-core/lib/jasmine-core/jasmine.css">
<script src="node_modules/jasmine-core/lib/jasmine-core/jasmine.js"></script>
<script src="node_modules/jasmine-core/lib/jasmine-core/jasmine-html.js"></script>
<script src="node_modules/jasmine-core/lib/jasmine-core/boot.js"></script>
Тогда angular2 это установка. Вы уже знаете, что когда вы пишете в ES5 вы должны использовать UMD пучки
<script src="node_modules/angular2/bundles/angular2-polyfills.js"></script>
<script src="node_modules/rxjs/bundles/Rx.umd.min.js"></script>
<script src="node_modules/angular2/bundles/angular2-all-testing.umd.dev.js"></script>
Теперь важная часть, тестирование. Основная задачей здесь является созданием тестового компонента
var TestComponent = ng.core.
Component({
selector: 'cmp',
template : '' // Left it blank, we override it when testing
}).Class({
constructor: function() {
this.someProperty = 'Initial value';
}
});
После создания компоненты, вы можете проверить его с помощью TestComponentBuilder
ng.testing.describe('Component building', function() {
ng.testing.it('should detect when a property changes',
ng.testing.inject([ng.testing.TestComponentBuilder], function(tcb) {
tcb
.overrideTemplate(TestComponent, '<div>{{someProperty}}</div>')
.createAsync(TestComponent)
.then(function(fixture) {
// Triggers change detection so
// the div actually contains the property value
fixture.detectChanges();
// Check if the div contains the correct value
expect(fixture.nativeElement.innerText).toEqual('Initial value');
// Change property's value
fixture.componentInstance.someProperty = 'New value';
// Triggers change detection again
fixture.detectChanges();
// Check, again, if the div contains the new value
expect(fixture.nativeElement.innerText).toEqual('New value');
});
}));
});
Заметьте, что я использую ng.testing.(describe/it/etc)
, потому что были исправлены эти функции от жасмина работать с угловым2.
С этого момента это будет очень легко продолжить. У вас уже есть полное репо, чтобы увидеть их specs. Интересный для NgFor. Вы можете следовать примерам TS/ES6, они одинаковы.
Вот plnkr с репродукцией.
Ссылка
Вы можете проверить, а Джули Ральфа repo (ng2-test-seed) и ее talk at AngularConnect 2015
Я надеюсь, что это помогает.
Спасибо, это очень полезно! Я не уверен, о каких документах вы говорите, хотя в «руководствах по тестированию» на https://angular.io/docs/ts/latest/testing/ нет разделов по тестированию компонентов, служб или DOM все же. –
Извините! Я имел в виду часть создания Жасмина (я взял его из документов)! Рад, что это помогло :) –
Быстрое наблюдение: Почему требуется 'overrideTemplate'? Когда я удаляю его, '.then (' никогда не запускается. Как я могу использовать свой оригинальный HTML-шаблон компонента в тестировании? –