我有一個方法Task<Details> GetDetails(int number);
。如何測試異步異常處理程序
它從一個異步MVC控制器稱爲:
var details = _provider.GetDetails(input);
Details details = null;
try
{
details = await getDetails;
}
catch (Exception ex)
{
// SOME CODE THAT NEEDS TESTING
}
嘗試在自定義,非異步測試框架測試。 GetDetails方法殘留,使用RhinoMocks: Provider.Stub(provider => provider.GetDetails(input) .Return(new Task<Details>(delegate { throw new Exception {}; }));
結果是單元測試的死鎖,它永遠運行。 有關如何解決此問題的任何建議?
您需要使用一個框架,該框架的核心是用於處理異步操作,瞭解任務以及如何使用它們等。如果您的測試框架不是爲了瞭解任務而構建的,那麼您將無法測試正確的異步代碼。 – Servy 2014-09-10 17:44:30