Переодически не проходит тест xUnit

Сам класс который нужно протестировать:

public class ClamAV : IVirusCheck
{
    private readonly ILogger<ClamAV> _logger;
    private readonly IClamSetting _clamSetting;

    public ClamAV(ILogger<ClamAV> logger, IClamSetting clamSetting)
    {
        _logger = logger;
        _clamSetting = clamSetting;
    }

    public async Task<bool> GetResultScan(IFormFile file)
    {
        try
        {
            var fileStream = file.OpenReadStream();
            var clam = _clamSetting.SetClam();

            var scanResult = await clam.SendAndScanFileAsync(fileStream);
            var rerult = scanResult.Result == ClamScanResults.Clean ? true : false;

            return rerult;
        }
        catch (Exception ex)
        {
            _logger.LogCritical(ex.ToString());

            return false;
        }
    }
}

public interface IClamClient
{
    Task<ClamScanResult> SendAndScanFileAsync(Stream stream);
}

public class ClamClientWrapper : IClamClient
{
    private readonly ClamClient _clamClient;

    public ClamClientWrapper(ClamClient clamClient)
    {
        _clamClient = clamClient;
    }

    public async Task<ClamScanResult> SendAndScanFileAsync(Stream stream)
    {
        return await _clamClient.SendAndScanFileAsync(stream);
    }
}

public interface IClamSetting
{
    IClamClient SetClam();
}

public class ClamSetting : IClamSetting
{
    public IClamClient SetClam()
    {
        return new ClamClientWrapper(new ClamClient("localhost", 3310)
        {
            MaxStreamSize = 75 * 1024 * 1024
        });
    }
}

Вот сам тест:

    [Fact]
    public async Task GetResultScan_CleanFile_ReturnsTrue()
    {
        var loggerMock = new Mock<ILogger<ClamAV>>();
        var clamSettingMock = new Mock<IClamSetting>();

        var cleanFileClamClientMock = new Mock<IClamClient>();
        cleanFileClamClientMock
            .Setup(c => c.SendAndScanFileAsync(It.IsAny<Stream>()))
            .ReturnsAsync(new ClamScanResult("ok"));
        clamSettingMock.Setup(c => c.SetClam()).Returns(cleanFileClamClientMock.Object);

        var clamAV = new ClamAV(loggerMock.Object, clamSettingMock.Object);

        var fileMock = new Mock<IFormFile>();
        var fileStreamMock = new MemoryStream(3 * 1024 * 1024);

        fileMock.Setup(f => f.OpenReadStream()).Returns(fileStreamMock);

        var result = await clamAV.GetResultScan(fileMock.Object);

        Assert.True(result);
    }

Порой тест не проходит из-за того что ожидался true, но вернулось false.


Ответы (0 шт):