2015-11-17 25 views
10

ASP.NET mvc 5'te proxy oluşturmak için OData V4 istemcisini kullanıyorum. Denetleyicileri Moq kullanarak sınamak istiyorum. OData servis yanıtını konteynere göre atabileceğim herhangi bir yol var mı?Mock OData İstemcisinin Kapsayıcısını Kullanarak Moq

Aşağıda
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 denetleyicisi olduğu: bir Yardım büyük takdir edilecektir

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

Aşağıda OData konteyner Örnekleyicide olup.

+3

Yapmak istediğiniz şeyi temel alarak "Denetleyicileri sınamak istiyorum". Verileriniz için başka bir katman eklemenizi öneririm. Örneğin deposu. S.O.L.I.D'e göre kontrolcünüz çok fazla personel yapıyor. – skalinkin

cevap

2

bu eklemeyi deneyin:

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

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

Sonra

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

için kumandayı değiştirmek Sonra kolayca Veri Erişim Katmanı mümkün olacak.

+1

Girişleriniz için teşekkürler. Aslında önerdiğin gibi yapıyoruz. Ama düşündüm ki, EF'in DbContext ve IDbSet'iyle dalga geçtiğimiz gibi, Moq'dan doğal olarak herhangi bir destek olmaz mıydı? –