Пример модульного тестирования выполняется индивидуально, но вместе завершается сбоемC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Пример модульного тестирования выполняется индивидуально, но вместе завершается сбоем

Сообщение Anonymous »

У меня есть тестовый пример, который не работает при совместном запуске и работает нормально по отдельности. Я пробовал добавить Thread.Sleep(), а также обновить вызов метода до синхронного, но мне это не помогло.

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

[Fact]
public async Task Should_Trigger_PublishLocationWac_Function()
{
//Arrange
PrepareData(out List locationWacData, out SkuAndWac skuAndWac);

Arrange(locationWacData);

//Act
var result = await _handler.RunAsync(skuAndWac, _mockContext.Object);

//Assert
Assert.Equal(locationWacData.Count, result.TotalDocuments);
Assert.Equal(locationWacData.Count, result.TotalPublished);
}

private void Arrange(List oneWacData, bool IsPublishedFailed = false, bool isException = false)
{
Environment.SetEnvironmentVariable(ConfigConstants.BatchSize, oneWacData.Count.ToString());

_mockloggerFactory.Setup(p => p.CreateLogger(It.IsAny())).Returns(_mockLogger.Object);
_mockServiceProvider.Setup(p => p.GetService(It.IsAny())).Returns(_mockloggerFactory.Object);
_mockContext.Setup(p => p.InstanceServices).Returns(_mockServiceProvider.Object);

var cursorMock = new Mock();
cursorMock.SetupSequence(x => x.MoveNext(It.IsAny()))
.Returns(true)
.Returns(false);
cursorMock.SetupSequence(x => x.MoveNextAsync(It.IsAny()))
.ReturnsAsync(true)
.ReturnsAsync(false);
cursorMock.SetupGet(x => x.Current).Returns(oneWacData);

if (isException)
{
_mockLocationWacRepository.Setup(x => x.GetCollection().FindAsync(It.IsAny(), It.IsAny(), default))
.ThrowsAsync(new Exception("Test exception"));
}
else
{
_mockLocationWacRepository.Setup(x => x.GetCollection().FindAsync(It.IsAny(), It.IsAny(), default))
.ReturnsAsync(cursorMock.Object);
}

if (IsPublishedFailed)
{
_mockMessageProducer.Setup(x => x.Produce(It.IsAny(), It.IsAny()))
.ReturnsAsync(0);
}
else
{
_mockMessageProducer.Setup(x => x.Produce(It.IsAny(), It.IsAny()))
.ReturnsAsync(oneWacData.Count);
}
}

private static void PrepareData(out List locationWacData, out SkuAndWac skuAndWac)
{
locationWacData =
[
new LocationWac
{
DataPartitionKey = "sain1",
Sku = "sku1",
Sain = "sain1",
WacPerUnit = 1.0m,
LastModifiedDate = DateTime.Now,
VariancePercent = 0.1m,
ProductGroup = "Food"
},
new LocationWac
{
DataPartitionKey = "sain2",
Sku = "sku2",
Sain = "sain2",
WacPerUnit = 1.0m,
LastModifiedDate = DateTime.Now,
VariancePercent = 0.1m,
ProductGroup = "Food"
}
];

skuAndWac = new SkuAndWac
{
Sain = "sain1",
Wac = 1.0m
};
}
Во время работы я получаю следующую ошибку:
Ошибка Assert.Equal(): значения различаются
Ожидается: 2
Фактическое: 4
Другой успешный тестовый пример —

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

[Fact]
public async Task RunAsync_Should_Log_BusinessException_WhenPublishingFails()
{
//Arrange
PrepareData(out List locationWacData, out SkuAndWac skuAndWac);

Arrange(locationWacData, true);

//Act
var result = await _handler.RunAsync(skuAndWac, _mockContext.Object);

// Assert
Assert.Equal(locationWacData.Count, result.TotalDocuments);
Assert.Equal(0, result.TotalPublished);
_mockErrorHandlingHelper.Verify(x => x.InsertErrorLogAsync(It.IsAny()), Times.Once);
}
Может ли кто-нибудь мне помочь в этом?

Подробнее здесь: https://stackoverflow.com/questions/792 ... g-together
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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