[英]Angular2 with Webpack and Karma can't find module tags in template
我有一个Webpack配置正在构建Typescript Angular2应用程序。 我正在尝试将Jasmine / karma测试集成到其中。
我有一个简单的Webpack测试配置,如下所示:
loaders: [{
test: /\.ts$/,
loaders: ['awesome-typescript-loader', 'angular2-template-loader','angular2-router-loader']
},
{ test: /\.html$/, loader: 'html' },
{ test: /\.(png|jpe?g|gif|svg|woff|woff2|ttf|eot|ico)$/, loader: 'null' }, {
test: /\.scss$/,
exclude: helpers.root('app', 'assets', 'scss'),
loaders: ['exports-loader?module.exports.toString()','css','sass']
}, {
test: /\.scss$/,
include: helpers.root('app', 'assets', 'scss'),
loaders: ['raw', 'postcss', 'sass']
}
],
除非我正在测试的组件尝试在其模板中尝试使用另一个组件,例如,如果模板具有类似<my-custom-component></my-custom-component>
类的东西,否则此方法就可以正常工作。
在这种情况下,Karma会给出模板编译器错误,表示找不到标签my-custom-component
。
我还尝试过像在beforeEach
步骤中那样向TestBed提供所需的组件:
TestBed.configureCompiler({
providers: [
{
provide: MyComponent,
useClass: MyComponent
},
{
provide: ComponentBeingUsed,
useClass: ComponentBeingUsed
}
]});
但是在尝试编译模板时仍然会出错。
组件属于模块声明而不是提供程序。 您需要将其添加到测试平台模块配置中:
beforeEach(() => {
TestBed.configureTestingModule({
declarations: [
MyComponent
]
});
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.