2017-07-19 5 views
0

フロントエンド/バックエンド開発のテストと分離をより良くするために、私たちは現在、devModeにモックサービス実装を提供する動的な方法を探しています。Angular2インジェクタ - 動的にサービス実装を選択

アイデアは、あなたの環境でサービスを嘲笑し、インジェクタがこれに基づいて実際の実装または模擬実装を返すように指定することです。

インジェクタが提供するすべてのサービスに対して動的にこれを行うことができる場合、またはすべてのサービスに対して別々の工場(同じことをやっている)を使用する必要があるかどうかという疑問は今ですか?

// pseudo code 
onRequestProviderFor(serviceName) 
{ 
    if(environment.mockTheseServices.contains(serviceName)) 
    { 
    return new "Mock"+serviceName.ts 
    } 
    else 
    { 
    return new serviceName.ts 
    } 
} 

これは可能ですか?そして、これを行うために使用できるインジェクタプロセスには、(devModeで)フックがありますか?

+0

私はサービスごとに別々の工場が必要だと思います。いくつかのコード生成を行うことができます。これはバレルファイルを更新し、同じインポートが異なるクラスになるようにします。 –

+0

あなたはあなたがそれを試して、あなたがアプリケーションをブートストラップするときにカスタムプロバイダを追加することができますか? – jonrsharpe

+0

あなたはそのコード 'environment.mockTheseServices.contains(serviceName)'を本番環境に持っていますか? –

答えて

1

https://github.com/typicode/json-serverのようなものを使用して別のモックサーバーを作成することを検討しましたか?

私は、同じコードベースでモックサービスを含まないようにプロジェクトコードをよりきれいに保つと思います。

+0

面白い、ありがとう、私はこれを見てみましょう! – TommyF

関連する問題