Nunit, Ninject, MVC2 및 ADO.Net 엔터티 데이터 모델을 사용하여 머리를 쓰려고합니다.Nunit, Ninject, MVC2 및 ADO.Net 엔터티 데이터 모델로 단위 테스트
SqlProductsRepository 클래스를 인스턴스화하는 ProductsController가 있다고 가정 해 보겠습니다.
public class ProductsRepository : IProductsRepository
{
public MyDbEntities _context;
public ProductsRepository()
{
_context = new MyDbEntities();
}
public IList<Product> GetAllProducts()
{
return (from p in _context.Products select p).ToList();
}
}
public class ProductsController : Controller
{
public ActionResult ProductsList()
{
ProductsRepository r = new ProductsRepository();
var products = r.GetAllProducts();
return View(products);
}
}
나는 이것이 올바른 데이터를 반환하지만 난 테스트 클래스를 작성하는 방법을 잘 모르겠어요 보장하기 위해 ProductsRepository에 단위 테스트를 수행 할 수 있도록하고 싶습니다.
내가 읽은 모든 튜토리얼/문서는 IProductsRepository를 사용하여 모의 객체를 만든 다음 컨트롤러를 주입하고 테스트하는 것을 가리킨다.
이것은 나에게 구체적인 구현을 우회하는 것처럼 보입니다.
MyDbEntities은 오는 ADO.Net 엔터티 데이터 모델 .edmx
좋아, 나와 함께있다. 제 의도는 저장소 메서드 자체를 테스트하기 위해 컨텍스트를 바꾸기 위해 db 표현을 주입하는 것이 었습니다. 이것이 좋은 일이 아니겠습니까? –
그걸 할 수는 있겠지만 그건 정말로 조롱하는 것입니다. 아이디어는 비즈니스 로직 코드의 각 주요 경로에 대해 적용 범위를 갖고 싶어하므로 각 테스트에서 모의 테스트를 실시하여 해당 경로를 테스트하는 결과를 반환해야합니다. 이것은 당신의 시험을 작고 단단하게 할 것입니다. –
건배. 나는 사용 된 용어가 섞여 있다고 생각한다. 저장소를 테스트하기 위해 Mock을 만드는 방법은 무엇입니까? –