비동기 메서드를 호출하는 동기 메서드에 대한 단위 테스트를 작성하는 올바른 방법은 무엇입니까? 지금은 단위 테스트가 지나가고 있지만 페이지를 열려고하면 결코 반환되지 않습니다. 내 단위 테스트가 실패하는 이유는 무엇입니까? 어떻게 실패시킬 수 있습니까?비동기 메서드를 호출하는 동기 메서드를 단위 테스트하는 방법?
나는이 간단한 코드로 내 문제를 복제 :
내 통과 시험 :
public ActionResult Index()
{
var syncService = new SyncService();
return View((object)syncService.DoSomeWork());
}
볼 반환하지
내 서비스 :
을 반환하지[TestMethod]
public void DoSomeWork_WhenWeDoSomeWork_ShouldReturnDone()
{
var service = new SyncService();
const string expected = "Done";
var actual = service.DoSomeWork();
Assert.AreEqual(expected, actual);
}
내보기
public class SyncService
{
public string DoSomeWork()
{
return SomeWork().GetAwaiter().GetResult();
}
private async Task<string> SomeWork()
{
var task1 = Task.Delay(1000);
var task2 = Task.Delay(1000);
await Task.WhenAll(task1, task2);
return "Done";
}
}
+1 항상 좋은 습관입니다. 스레딩/비동기 로직을 다른 로직과 분리하십시오. – Augusto