[英]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.