![](/img/trans.png)
[英]Difference between Testbed.inject(serviceName) and fixture.debugElement.injector.get(serviceName) in Angular Unit Testing
[英]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.