여기 내 시나리오입니다 :.NET 단위 테스트 - MVC와 MOQ/xUnit의 프레임 워크, 예상 반환하지 않는 결과
(예상대로) 나는 저장소 더불어, .NET MVC 4.0 프로젝트에 일하고 있어요, Moq/xUnit 테스트 라이브러리를 .NET 단위 테스트 프로젝트로 구현하려고합니다.
나는이 멀리있어 :
MVC 컨트롤러
private IHOLService _service;
public PolicyController(IHOLService service)
{
_service = service;
}
public ActionResult Index()
{
var policies = _service.GetAllPolicies(100, 0).ToList();
return View(policies);
}
단위 테스트 클래스
을[Fact]
public void GetPolicies()
{
// Arrange
var mockService = new Mock<IHOLService>();
List<Policy> policy = new List<Policy>()
mockService.Setup(cr => cr.GetAllPolicies(10, 0)).Returns(policy);
var controller = new PolicyController(mockService.Object);
// policy here contains 0 results.
// Act
var result = (ViewResult)controller.Index();
var model = result.ViewData.Model; // equals 0.
// Assert
var listCategories = Assert.IsAssignableFrom<List<Policy>>(result.ViewData.Model);
// listCategories.Count equals 0 results.
Assert.Equal(10, listCategories.Count); // Thus always fails
}
내 문제는 컨트롤러가 모든 것을 직접 호출 할 때 100 개의 정책이로드됩니다.
그러나 테스트를 실행하면 0 개의 제품이로드됩니다.이 제품에서는 서비스 초기 설정과 관련하여 줄을 따라 조롱하는 호출에 문제가 있다고 생각합니다. 이전에 누구도 이것을 가지고 있었고 조언을 제공 할 수 있습니까?
또한 데이터 영역에 보관 된 저장소가 아닌 내 서비스를 테스트해야합니까?
미리 감사드립니다.
어쩌면 나는 이것을 잘못보고있다. 그래서 코드에서 테스트 객체 그룹을 생성한다. 말하자면, 무작위 객체 100 개를 .Setup에로드하고 테스트 객체에 테스트한다. 짐작할 수 있겠지만. 반환은 .GetAllPolicies()의 결과에서 해당 객체로로드된다는 것을 의미합니다. –
나는 단위 테스트, 최종 부분에 대한 자세한 내용과 함께 실제로 내 질문을 업데이트했습니다. 귀하의 의견으로는, 결과가 반환되지 않았기 때문에 문제가있는 컨트롤러 호출과 더 관련이 있다고 생각합니까? –
예 - 테스트에서 반환 할 객체를 만들고,'Return'은 여러분이 지정한 인스턴스를 반환합니다. 실제 GetAllPolicies는 절대 호출되지 않습니다. –