2017-09-14 75 views
1

我試圖在我的測試中模擬路由器。我跟着指令一步步在this answer給出,但我仍然得到錯誤如何正確模擬路由器?

「不能讀取屬性‘’空的」出口

這是我的嘗試:

beforeEach(async(() => { 
     TestBed.configureTestingModule({ 
      imports: [RouterTestingModule.withRoutes([ 
       {path:'profile/login',component:ProfileLoginComponent}] 
      )], 
      declarations: [ ProfileLoginComponent ], 
      providers: [ 
       FormBuilder,AuthModel 
      ], 
      schemas: [NO_ERRORS_SCHEMA] 
     }) 
      .overrideComponent(ProfileLoginComponent, { 
       set: { 
        providers: [ 
         {provide: AuthModel, useClass: MockAuthModel}  
        ], 
       } 
      }) 
      .compileComponents(); 
    })); 

如果我在模板中刪除routerLinkrouterLinkActive的代碼,那麼測試用例可以很好地工作。我哪裏錯了?

+1

它看起來像你給的路線導航到一個叫出口,但是角度不能找到它。我無法在你的路線中看到它......你有更多的路線定義在別的地方嗎? – JayDeeEss

+0

@JayDeeEss我跑了一個完整的項目搜索。我沒有任何名爲'網點'的東西。只有我能找到的東西是 SanjuAus

+0

好的,你可以發佈你的代碼在哪裏導航到你的組件......無論是編程或在HTML – JayDeeEss

回答

0

我已經設法解決了這個問題。我也在另一個post回答了這個問題。

我發現當routerLink指向一個 空變量時會發生此錯誤。在我的情況下,名爲favoriteUrl的財產,我 分配給routerLink是空的,因爲孤立測試 環境。所以我手動分配一個值到屬性 beforeEach函數,並解決了這個問題,至少對我來說。

參考:https://stackoverflow.com/a/46342813/8558515