2016-07-13 3 views
1

Я только что обновил RC3 на RC4, и теперь я получаю эту ошибку в моих тестах:Angular2 RC4: overrideDirective

Error: overrideDirective is not supported in this implementation of TestComponentBuilder 

В TestComponentBuilder внутри @angular/[email protected]/testing/test_component_builder.js я могу видеть это объявление метода

TestComponentBuilder.prototype.overrideDirective = function(componentType, from, to) { 
    throw new Error('overrideDirective is not supported in this implementation of TestComponentBuilder.'); 
}; 

Так теперь возникает вопрос: как переопределить директиву?

ответ

1

Ok, так что кажется, что они deliberatevely убрали функцию без замены его чем-то еще, как указано в this issue

Таким образом, единственное решение я нашел это использовать странное OverridingTestComponentBuilder, который внезапно появился в compiler/testing.

Это не идеально, так как от RC4 TestComponentBuilder следует импортировать из @angular/core/testing, но это временное исправление, ожидающее их сортировки.

После того, как вы импортировать класс вы можете использовать его так же, как вы бы использовать TestComponentBuilder

import { OverridingTestComponentBuilder } from '@angular/compiler/testing' 

beforeEach(inject([OverridingTestComponentBuilder], _tcb => { 
    tcb = _tcb 
})); 

И все переопределяют методы * должны работать хорошо.

1

Поставщики по умолчанию Угловые тесты должны предоставить вам реализацию OverridingTestComponentBuilder для типа TestComponentBuilder по умолчанию. Как вы настраиваете свой тест? (например, setBaseTestProviders? Использование списков, предоставленных Angular, должно исправить вашу проблему. Вот пример: https://github.com/juliemr/ng2-test-seed/blob/master/karma-test-shim.js#L84