Im xunit-Test wird der Catch-Block nach dem Verspotten nicht ausgeführtC#

Ein Treffpunkt für C#-Programmierer
Anonymous
 Im xunit-Test wird der Catch-Block nach dem Verspotten nicht ausgeführt

Post by Anonymous »

Der zu testende Code lautet wie folgt:

Code: Select all

//pseudo code
public class ConnectionManager: IConnectionManager
(
ILogService _logService;
IConnector _iConnector;
public ConnectionManager(IConnector connector, ILogService logService)
{
this._logService = logService;
this._iConnector = connector;
}

public Task ConnectToIP(string ip)
{
try
{
return Task.Run(() => _iConnector.Connect(ip));
}
catch (Exception ex)
{
_logService.Error(ex);
throw;
}
}
)
Um dies zu testen, habe ich folgenden Code geschrieben:

Code: Select all

//pseudo code
[Fact]
public async Task ConnectToIP_Exception_LogsAndThrows()
{
// Arrange
Mock _mockLogService = new Mock();
Mock _mockConnector = new Mock();
IConnectionManager _manager = new ConnectionManager(_mockConnector.Object, _mockLogService.Object);
var ip = "192.168.9.1";
var exception = new InvalidOperationException("Test Exception");
_mockConnector.Setup(r => r.Connect(It.IsAny())).ThrowsAsync(exception);

// Act & Assert
await Assert.ThrowsAsync(() => _manager.ConnectToIP(ip));
_mockLogService.Verify(l => l.Error(exception), Times.Once);
}
Der Code ist in Task.Run eingeschlossen. Das Problem ist, dass meine Tests nie den Catch-Block erreichen, der Catch-Block wird nicht ausgeführt,
Ich möchte auch den Catch abdecken

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post