我正在使用Ionic構建我的第一個Angular 2應用程序,並且正在構建一些服務。本教程不使用靜態方法,但對我來說,似乎在我的用例中,靜態方法和屬性是要走的路。不使用靜態方法會是這樣的:是否有任何理由不對角2中的服務使用靜態類方法?
import {MyService} from "../services/MyService";
@Component({
templateUrl:"page.html",
providers: [MyService]
})
export class MyNewClass{
constructor(private myService: MyService){}
//to use:
this.MyService.get()
}
VS
import {MyService} from "../services/MyService";
@Component({
templateUrl:"page.html"
})
export class MyNewClass{
constructor(){}
//to use:
MyService.get()
}
現在,在我的使用情況下,MyService
數據不會在整個應用程序而改變。我一次加載數據,並需要在整個應用程序中使用它。我想在MyService中有一個靜態數組,其中包含所有其他類使用的信息。在我看來,這樣做的好處是很明顯,整個應用程序中只有一個實例 - 沒有猜測。另外,我不必寫providers: [MyService]
,也不必將其注入到構造函數中,我認爲這會是一件非常好的事情,因爲我不希望構造函數參數由於長度而變得不可讀。這有什麼不對嗎?
對我來說似乎適用於標準參數:您如何測試使用此服務的東西?你可以換出一個模擬版本嗎? –
@Niklas B.它似乎很容易測試 - 你只需要在一些數據中進行硬編碼並返回。但是我沒有太多的測試框架經驗,所以我希望你能告訴我這是/是爲什麼會出現問題。 – user3413723
我想如果你的服務是可配置的,它可以返回對它的請求的模擬響應,那麼是的,使用它的組件是可測試的。但是服務本身似乎過於複雜 –