2015-11-17 10 views
10

私はasp.net mvc内でプロキシを作成するためにOData V4クライアントを使用しています。5. Moqを使用してコントローラをユニットテストしたいと思います。コンテナでODataサービスの応答を模倣できる方法はありますか?以下のODataコンテナインスタンシです:Moqを使用したOclクライアントのコンテナ

以下
public static class ControlEntityContextHelper 
    { 
     /// <summary> 
     /// Returns OData service context 
     /// </summary> 
     /// <returns></returns> 
     public static Container GetEntityContext() 
     { 
      // create the container 
      var container = new Container(new Uri("http://localhost/services/odata/")); 
      container.Timeout = 1800; 
      return container; 
      } 
    } 

はMVCコントローラです:

public JsonResult GetEmployees(string employeeId) 
    { 
     var odataContext = ControlEntityContextHelper.GetEntityContext(); 
     var employee = odataContext.Employees.Where(emp => emp.EmployeeId == employeeId); 
     return Json(employee, JsonRequestBehavior.AllowGet); 
    } 

すべてのヘルプは大歓迎されます。

public interface IEmployeeRepository 
{ 
    Employee GetById(string id); 
} 

public class EmployeeRepository: IEmployeeRepository 
{ 
    public Employee GetById() {//access to OData} 
} 

そして次にあなたが簡単にあなたのデータアクセス層のことができるようになります

public JsonResult GetEmployees(string employeeId) 
    { 
     var employee = employeeRepository.GetById(employeeId); 
     return Json(employee, JsonRequestBehavior.AllowGet); 
    } 

にあなたのコントローラーを変更します。

+3

あなたが「コントローラをユニットテストしたい」ということに基づいて、あなたのデータに別のレイヤーを追加することをお勧めします。たとえばリポジトリS.O.L.I.Dによると、あなたのコントローラーはあまりにも多くのスタッフを雇っています。 – skalinkin

答えて

2

は、これを追加してみてください。

+1

入力いただきありがとうございます。私たちはあなたが提案したのと同じ方法で実際にやっています。しかし、私は、Moqからの本質的なサポートはないと思っていました。私たちがEFのDbContextとIDbSetを嘲笑するように –

関連する問題