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