我有angular 2 webpack应用程序,所有webpack,根据angular.io webpack指南创建的karma配置。 我不使用aot。 我正在写茉莉花单元测试规范来测试我的组件。 首先,我尝试没有异步块,在这种情况下,单元测试只能得到执行,直到fixture.detectChanges()调用,之后的代码不会被执行。看起来像fixture.detectChanges调用无限地被阻止。Angular 2单元测试 - 获取错误无法加载'ng:///DynamicTestModule/module.ngfactory.js'
我尝试通过在异步块中包含代码。 然后我得到以下错误。 错误:无法执行 '发送' 上 '的XMLHttpRequest':无法加载 'NG:/// DynamicTestModule /module.ngfactory.js'
代码,而异步
beforeeach(()=> {
TestBed.configureTestingModule({
imports:[],
declaration :[Mycomp],
providers:[{ provide:MyService, useclass:MyMockService}]
});
fixture=TestBed.createComponent(Mycomp);
console.log(' before detect changes'):
fixture.detectChanges():
console.log('after detect changes');// this is not getting
logged .. karma shows 0 of 1 executed successfully
});
随着异步
beforeeach(async(()=> {
TestBed.configureTestingModule({
imports:[],
declaration :[Mycomp],
providers:[{ provide:MyService, useclass:MyMockService}]
});
fixture=TestBed.createComponent(Mycomp);
fixture.detectChanges():
}));
得到错误无法加载dynamictestmodule/module.ngfactory.js
这是真的,但我也得到了同样的错误,有时,当我有没有正确嘲笑或服务如果我的组件试图访问其中一个服务返回的空值。仍然是一个有效的答案,但要注意,这可能并不总能解决问题。 – blo0p3r
刚刚发现,通过将'sourcemap'选项设置为false可以得到更好的错误信息:'ng test --sourcemap = false' – blo0p3r
@ blo0p3r这是一个很好的结果!将sourcemap设置为false会将无用的XMLHttpRequest错误转换为实际的根错误。 – newclearwinter