簡體   English   中英

模擬服務時Angular2測試失敗

[英]Angular2 test fail when mocking a service

嘗試使用調用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。

哇,嗯?

仍然存在不執行異步操作的問題,我不知道為什么

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM