저는 단위 테스트를 처음 접했고이 경우 제대로 테스트하는 법을 배울 수 없습니다. I는 "_userService"에 대한 별도의 검사 무리가mspec & rhino mocks가 예외 테스트를 예상합니다.
public ActionResult Register(formModel model)
{
if (ModelState.isValid) {
try {
_userService.CreateUser(a bunch of parameters here);
return RedirectToAction(some other action);
}
catch (Exception e)
{
ModelState.AddModelError("",e.Message);
}
}
return View();
}
:
난 (의사 코드) 제어기 방법이있다. "CreateUser"메서드는 새로운 사용자를 생성하고 아무것도 반환하지 않거나 try catch에서 컨트롤러 서라운드에 버블 링하고 ModelState에 예외를 추가하는 오류 (예 : 사용자가있는 경우)가 발생하면 예외를 throw합니다.
서비스를 조롱하고 올바르게 반환해야한다고 주장했기 때문에 아무 것도 반환하지 않으며 내 컨트롤러에서 호출한다는 사실을 알고 싶기 때문에 올바르게 호출되었습니다 (assertwascalled 구문 사용).
userservice에서 오류가 발생했을 때 리디렉션하지 않아야하고 그 예외를 modelstate에 추가해야하는지 여부를 테스트하는 방법은 확실하지 않습니다. rhino mock을 사용하면 모의 작업을 할 수는 있지만 단위 테스트의 책 예술은 이에 대해 조언합니다.
지금 바로 테스트 할 때 모델 오류를 수동으로 추가하고 (사용자 서비스의 경우 신경 쓰지 않음) 오류가있는 경우 컨트롤러가 동일한보기를 반환하는지 테스트합니다. 이것에 대해 올바른 방법인가요? 또는 _userService를 스텁하여 오류가 발생하고 modelstate에 추가되는지 확인하는 별도의 테스트를 작성해야합니까? 아니면 내가 그 사건을 시험해 봐야하지 않겠 니? 나는 모든 것을 분석하고 모델 스테이트를 사용하는 테스트가 이것을 만족시키기에 충분할 것 같은 느낌이 들었습니다. ...
감사합니다. 그런 식으로 테스트하는 것이 나에게 의미가 있습니다. – maciek