В блоке catch теста xunit не выполняется после издевательстваC#

Место общения программистов C#
Ответить
Anonymous
 В блоке catch теста xunit не выполняется после издевательства

Сообщение Anonymous »

Протестируемый код выглядит следующим образом:

Код: Выделить всё

//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;
}
}
)
Для тестирования я написал следующий код:

Код: Выделить всё

//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);
}
Код заключен в Task.Run. Проблема в том, что мои тесты никогда не достигают блока catch, блок catch не выполняется.
Я тоже хочу охватить catch

Подробнее здесь: https://stackoverflow.com/questions/797 ... er-mocking
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»