簡體   English   中英

Angular 單元測試 - new Service() 和 Testbed.inject() 有什么區別?

[英]Angular Unit Test - What is the difference between new Service() and Testbed.inject()?

在 Angular 的網站上,我們可以看到兩種編寫 Service 單元測試的方法。

第一種是通過新服務實例化服務。

let service: ValueService; beforeEach(() => { service = new ValueService(); });

二是通過TestBed 實例化服務。

beforeEach(() => {
    TestBed.configureTestingModule({ providers: [ValueService] });
    service = TestBed.inject(ValueService);
});

誰能告訴我這兩種方法有什么區別,什么時候應該和不應該使用它們,非常感謝!

如果我測試的服務有使用其他服務或路由器的構造函數,我還能使用 new Service()

在這種情況下,您還將創建其他服務並將其傳遞給構造函數。 您可以手動連接它,而不是使用 angular 依賴管理。

它說您可以在以后不調用構造函數時使用 new Service 。 這是否意味着我不能在其他組件的單元測試(在同一個項目中)中調用此服務,而在它的 Testbed 中提供此服務?

我認為它們只是意味着,如果您需要為每個地方繼續調用新服務,那么使用創建一個實例並每次都返回它的 Testbed 效率不高,而且更好。

暫無
暫無

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

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