我刚刚将RC3更新为RC4,现在我的测试中出现了这个错误:
Error: overrideDirective is not supported in this implementation of TestComponentBuilder
在TestComponentBuilder
内@angular/core@2.0.0-rc.4/testing/test_component_builder.js
我可以看到方法的声明
TestComponentBuilder.prototype.overrideDirective = function(componentType, from, to) {
throw new Error('overrideDirective is not supported in this implementation of TestComponentBuilder.');
};
所以现在问题是:我如何覆盖指令?
答案 0 :(得分:1)
好的,似乎他们故意删除了这个功能而没有用this issue
中所述的其他内容替换它所以我发现的唯一解决方案是使用突然出现在OverridingTestComponentBuilder
中的奇怪的compiler/testing
。
这不理想,因为RC4 TestComponentBuilder
应该从@angular/core/testing
导入,但它是一个临时解决方案,等待他们对此进行排序。
导入课程后,您可以像使用TestComponentBuilder
一样使用
import { OverridingTestComponentBuilder } from '@angular/compiler/testing'
beforeEach(inject([OverridingTestComponentBuilder], _tcb => {
tcb = _tcb
}));
并且所有覆盖*方法应该可以正常工作。
答案 1 :(得分:1)
默认情况下,默认的Angular测试提供程序应该为TestComponentBuilder类型提供OverridingTestComponentBuilder实现。你是如何设置考试的? (例如setBaseTestProviders?使用Angular提供的列表可以解决你的问题。这是一个例子:https://github.com/juliemr/ng2-test-seed/blob/master/karma-test-shim.js#L84