簡體   English   中英

Angular TestBed.inject

[英]Angular TestBed.inject

我正在做 angular 單元測試。 TestBed.inject(service) 是否創建服務的新實例? 我一直假設 TestBed.configureTestingModule() 創建了服務,並且通過注入我們只是訪問了所創建服務的引用。

TestBed.configureTestingModule() 幫助您配置提供程序。 配置提供程序意味着您讓 Angular 依賴注入系統知道此依賴關系,稍后它可以在通過依賴注入令牌請求時將其注入組件。 在下面的示例中,依賴項和令牌是 ValueService。

TestBed.configureTestingModule({ providers: [ValueService] });

稍后,您可以使用 TestBed.inject 在您的測試中使用 ValueService。 當您說 TestBed.inject Angular 時,依賴注入系統會檢查是否有針對令牌注冊的提供者,如果是,則它會創建一個服務實例並返回它。 如果它沒有找到該令牌,您將獲得著名的

沒有 ValueService 錯誤的提供者。

it('should use ValueService', () => {
  service = TestBed.inject(ValueService);
  expect(service.getValue()).toBe('real value');
});

所以它類似於我們的應用程序代碼,我們首先配置提供程序,然后將其注入我們的組件以獲取該服務的實例。

暫無
暫無

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

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