2011-07-01 4 views
1
내가 MVC 작업을 테스트하기 위해 노력하고있어

, 그래서 내가 Create하고 간단했다 Delete 행동으로 IRepository 및 MockRepository코드 우선으로 MVC 작업을 테스트하는 방법은 무엇입니까?

public class Repository : DbContext, IRepository 
{ 
    public IDbSet<TEntity> SomeEntities { get; set; } 
} 

public interface IRepository : IDisposable 
{ 
    IDbSet<TEntity> SomeEntities { get; set; } 

    int SaveChanges(); 
} 

을 만들었지 만 Edit 조치 붙어 :

private IRepository repository; 

    public ActionResult Edit(TEntity entity) 
    { 
     if (ModelState.IsValid) 
     { 
      repository.Entry(entity).State = EntityState.Modified; 
      repository.SaveChanges(); 

      return RedirectToAction("Index"); 
     } 

     return View(entity); 
    } 

그래서 내가 두 참조 이 문제를 해결하는 방법 :

  1. 나는 IRepository에 새로운 방법을 추가해야합니까

    DbEntityEntry<TEntity> Entry<TEntity>(TEntity entity) where TEntity : class; 
    

    어떻게 할 수 있습니까? DbContext.Entry 메서드는 매우 구체적인 DbEntityEntry<TEntity> 유형을 반환합니까?

  2. 또는 업데이트 방법을 변경 하시겠습니까? 이 작업을 수행하는 데 권장되는 방법은 무엇입니까?

답변

1

나는 보통 EF의 기능을 추상적으로 묘사 했으므로 내 행동이 다음과 같이 보입니다.

private IRepository repository; 
public ActionResult Edit(TEntity entity) 
{ 
    if (ModelState.IsValid) 
    { 
     repository.Update(entity); 
     repository.SaveChanges(); 

     return RedirectToAction("Index"); 
    } 

    return View(entity); 
} 

모의 저장소를 만들고 원하는 기능이 호출되는지 쉽게 테스트 할 수 있습니다.

참고 : 일반적으로 내 항목을 모델과 분리하고 작업 필터를 사용하여 작업 단위를 관리하지만 실제이 게시물과 관련이 없습니다.

관련 문제