私は、テストしたい角度2のサービスの機能を持っています。角度2のテストでモジュールを偽る
service.ts
upload(){
let file = new Transfer();
file.upload(myfile).then(// my callback);
}
私はjasmine
を使用して私のテストでTransfer
をモックしたいと思います。私はそれを模擬するために、私の
sevice.spec.ts
import { TransferMock as Transfer } from '../mocks/mocks'
でこれを試してみました。しかし、それは動作していません。これは私のテストがインスタンス化される方法です。
describe('authentication service' ,() => {
beforeEach(() => {
auth = new Service(<any>new HttpMock(), <any>new StorageMock())
});
it('initialize authentication',() => {
expect(auth).not.toEqual(null);
auth.upload('file'); //it fails here
});
})
編集
Transfer
は、サービス内に注入されていません。Transfer
を使用する関数は1つのみです。だから私は推測する(他の意見を知ってうれしい)アプリの初期読み込み時間を減らすことができます注入しないでください。だから私は、もしかして、このように構築されているならば、模擬することがあるのかどうかを知りたいのですが?
編集
それがベストプラクティスであると私はマーティンの答えを受け入れていたが、それはあなたがそれが失敗する可能性がブラウザのサポートを持っているdoesntのプラグインplugins.If ionic-native
を使用する場合に発生することが一つの問題があります。この場合、私はそれを注入すると、エラーFileTransfer is not defined
と起こった。だから、私は再び提案を探しています。
ありがとうございました。私の質問に言及したように、「転送」は私のサービスに注入されていません。 1つの関数だけが '' Transfer''を使用します。だから私は推測(?)初期ローディング時間を減らすことができます注入しないでください。だから私は、もしかして、このように構築されているならば、模擬することがあるのかどうかを知りたいのですが? – raj
いいえ、マーティンの言葉通りに行うべきです。 1つの方法でのみ使用されていても、あなたのサービスに転送する欠点はありません。これは共通のパターンです。 – philipooo
@raj Dependancy Injectionを使用すると、パフォーマンスヒットは表示されません。代わりに、テスト可能なコードの利点があります。 – Martin