これを行うには、おそらく多くの方法があります。これが私がすることです。「ベスト プラクティス」のカテゴリに該当する場合と該当しない場合があります。
Web サービスのインターフェースを備えたラッパーを作成します。
たとえば、WebService に 、、、、の 4 つのメソッドがあるGet()
とCreate()
しUpdate()
ますDelete()
。
私のインターフェースはとてもシンプルです
public interface IServiceWrapper
{
object Get();
object Create(object toCreate);
object Update(object toUpdate);
bool Delete(object toDelete);
}
これで、2 つの実装を作成できます。実際の Web サービスを呼び出すもの
public class ServiceWrapper : IServiceWrapper
{
public object Get(){//call webservice Get()}
public object Create(object toCreate){//call webservice Create()}
public object Update(object toUpdate){//call webservice Update()}
public bool Delete(object toDelete){//call webservice Delete()}
}
そして、Webサービスの動作を模倣するフェイク(またはモック)実装(通常はメモリ内データを使用)
public class FakeServiceWrapper : IServiceWrapper
{
private void PopulateObjects()
{
//mimic your data source here if you are not using moq or some other mocking framework
}
public object Get(){//mimic behavior of webservice Get()}
public object Create(object toCreate){//mimic behavior of webservice Create()}
public object Update(object toUpdate){//mimic behavior of webservice Update()}
public bool Delete(object toDelete){//mimic behavior of webservice Delete()}
}
一般的に、消費するサービスまたはコントローラーにインスタンスを挿入することで、どちらか一方を使用します。ただし、必要に応じて、各ラッパーのインスタンスを簡単にインスタンス化し、メソッド レベルで「選択して選択」することができます。