非同期メソッドを呼び出す同期メソッドの単体テストを作成する正しい方法は何ですか。現在、単体テストに合格していますが、ページを開こうとすると、ページが返されません。ユニットテストが失敗しないのはなぜですか?どうすれば失敗させることができますか?
この単純なコードで問題を再現しました。
私の合格テスト:
[TestMethod]
public void DoSomeWork_WhenWeDoSomeWork_ShouldReturnDone()
{
var service = new SyncService();
const string expected = "Done";
var actual = service.DoSomeWork();
Assert.AreEqual(expected, actual);
}
決して戻らない私の見解:
public ActionResult Index()
{
var syncService = new SyncService();
return View((object)syncService.DoSomeWork());
}
ビューに戻ることのない私のサービス:
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";
}
}