单元测试 – 模拟服务时Angular2测试失败
发布时间:2020-12-17 17:07:27 所属栏目:安全 来源:网络整理
导读:尝试使用调用rest API的服务依赖项来测试组件,使用扩展实际服务的类来创建服务的模拟版本. 现在如果我用模拟的那个覆盖提供者,那么奇怪的错误来自业力记者,首先是404个不存在的文件(真的不应该存在),然后是“{originalErr:{}}”.我的意思是至少告诉我我做错
尝试使用调用rest API的服务依赖项来测试组件,使用扩展实际服务的类来创建服务的模拟版本.
现在如果我用模拟的那个覆盖提供者,那么奇怪的错误来自业力记者,首先是404个不存在的文件(真的不应该存在),然后是“{originalErr:{}}”.我的意思是至少告诉我我做错了什么:) 我的测试服: describe('App: HeaderComponent',() => { it('should get categories on initialization',async( inject([TestComponentBuilder],(builder: TestComponentBuilder) => { let fixture: ComponentFixture<HeaderComponent>; expect(builder).toBeDefined(); return builder .overrideProviders(HeaderComponent,[{provide: CategoryService,useClass: MockCategoryService}]) .createAsync(HeaderComponent).then((_fixture) => { fixture = _fixture; let $el = fixture.debugElement; let el = $el.nativeElement; let component = $el.componentInstance; component.ngOnInit(); fixture.detectChanges(); expect(el.querySelector('a')).toHaveText('Electric'); }); }) ) ); }); 输出: 01 08 2016 11:58:29.684:WARN [karma]: No captured browser,open http://localhost:9876/ 01 08 2016 11:58:29.713:INFO [karma]: Karma v1.1.2 server started at http://localhost:9876/ 01 08 2016 11:58:29.718:INFO [launcher]: Launching browser Chrome with unlimited concurrency 01 08 2016 11:58:29.729:INFO [launcher]: Starting browser Chrome 01 08 2016 11:58:32.277:INFO [Chrome 52.0.2743 (Windows 10 0.0.0)]: Connected on socket /#Semtu7s7yqM-TW0GAAAA with id 14496897 01 08 2016 11:58:35.315:WARN [web-server]: 404: /base/dist/app/shared/services.js 01 08 2016 11:58:35.318:WARN [web-server]: 404: /base/dist/app/shared/services/mocks.js Chrome 52.0.2743 (Windows 10 0.0.0) ERROR { "originalErr": {} } 如果我删除测试通过的行(但不执行“then(…)”代码块): overrideProviders(HeaderComponent,[{provide:CategoryService,useClass:MockCategoryService}]) 解决方法
好吧,如果有人遇到同样的问题,原来应该导入“ts”文件本身,而不是通过桶.意思是你应该写这样的东西:
import { CategoryService } from '../../shared/services/category/category.service'; import { MockCategoryService } from '../../shared/services/category/category.service.mock'; 代替 import { CategoryService,MockCategoryService } from '../../shared/services/category'; 即使您在导出文件的目录中有index.ts. 哇,嗯? 仍然存在不执行异步操作的问题,我不知道为什么 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |