Angular2 RC4:overrideDirective

时间:2016-07-13 12:23:21

标签: angular angular2-testing

我刚刚将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.');
};

所以现在问题是:我如何覆盖指令?

2 个答案:

答案 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