2017-04-25 46 views
1

我有這個單元測試,我一直在試圖拋出一個異常,但我無法做到這一點,請你能幫助我嗎?拋出ExpectedException TimeoutException與存根不工作c#

[TestMethod] 
    [ExpectedException(typeof(TimeoutException))] 
    public async Task HandleAsyncDeleteModel_WhenRepositoryFails_ThrowsException() 
    { 
     //Arrange 
     var token = new CancellationToken(); 
     var deleteModel = new DeleteProcessCommand(_img, _tnt, _pro, _url); 
     var writeRepository = new StubIWriteRepository<Dto>() 
     { 
      DeleteIfExistsAsyncGuidGuidGuidCancellationToken = (img, tnt, pro, tkn) => 
      { 
       throw new TimeoutException(); 
      } 
     }; 

     var Logger = new StubILogger(); 
     var commandHandler = new CommandHandler(Logger, writeRepository, null, null, null, null, null, null); 

     //Act 
     await commandHandler.HandleAsync(deleteModel, token); 
    } 
+0

在行爲中,而不是等待做。等待方法。 // Act commandHandler.HandleAsync(deleteModel,token).Wait(); 試試看。 – AzzamAziz

回答

0

單元測試不等待異步方法。沒有人要求異步方法的結果。你需要做一個。等待它,迫使它等待結果。

[TestMethod] 
[ExpectedException(typeof(TimeoutException))] 
public async Task HandleAsyncDeleteModel_WhenRepositoryFails_ThrowsException() 
{ 
    //Arrange 
    var token = new CancellationToken(); 
    var deleteModel = new DeleteProcessCommand(_img, _tnt, _pro, _url); 
    var writeRepository = new StubIWriteRepository<Dto>() 
    { 
     DeleteIfExistsAsyncGuidGuidGuidCancellationToken = (img, tnt, pro, tkn) => 
     { 
      throw new TimeoutException(); 
     } 
    }; 

    var Logger = new StubILogger(); 
    var commandHandler = new CommandHandler(Logger, writeRepository, null, null, null, null, null, null); 

    //Act 
    commandHandler.HandleAsync(deleteModel, token).Wait(); 
} 
+0

它的工作,謝謝:) –

相關問題