0

MVC アーキテクチャを使用して Web アプリケーションを構築しています。まだ開発中の Web サービスを使用する必要があります (アジャイル手法に従っています)。Web サービスにはいくつかのメソッドがあります。いくつかのメソッドは安定しており (公開および実行中)、一部のメソッドはまだ開発中です。

つまり、クライアントから新しいメソッドを (準備が整うまで) モックし、古いメソッドを (回帰テストのために) 使い続ける必要があります。

メソッド レベルでサービスをモックするためのベスト プラクティスは何ですか? 提案やアイデアは大歓迎です。任意のモッキング フレームワークを使用できますか?

これを ASP.Net MVC フレームワークと CodeIgniter 上に構築された PHP アプリケーションに適用します。前もって感謝します。

4

2 に答える 2

0

これを行うには、おそらく多くの方法があります。これが私がすることです。「ベスト プラクティス」のカテゴリに該当する場合と該当しない場合があります。

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()}
}

一般的に、消費するサービスまたはコントローラーにインスタンスを挿入することで、どちらか一方を使用します。ただし、必要に応じて、各ラッパーのインスタンスを簡単にインスタンス化し、メソッド レベルで「選択して選択」することができます。

于 2013-03-06T17:50:18.477 に答える