Проверка нескольких пост -полезных нагрузок в модульном тестеC#

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

Сообщение Anonymous »

У меня есть модульный тест, который в настоящее время публикует множество строк заказа стороннему продавцу. Они попросили изменить код для отправки каждой строки заказа в качестве единой полезной нагрузки JSON. Изменение кода было достаточно простой, но у меня возникла проблема, пытаясь обновить модульный тест для проверки JSON для первых двух строк заказа. Имеет массив строк заказа, а OutputFile1 и OutputFile2 - первые две строки заказа, отформатированные в DTO JSON. < /p>
[TestMethod]
[DataRow(@"/sample-data/2-return-no-receipt-dto.json", @"/sample-data/2-return-no-receipt-Line1.json", @"/sample-data/2-return-no-receipt-Line2.json", "")]
[DataRow(@"/sample-data/3-sale-dto.json", @"/sample-data/3-sale-Line1.json", @"/sample-data/3-sale-Line2.json", "")]
[DataRow(@"/sample-data/4-return-dto.json", @"/sample-data/4-return-Line1.json", @"/sample-data/4-return-Line1.json", @"/sample-data/4-return-orig-dto.json")]
[DataRow(@"/sample-data/1-retailsales-csc-dto.json", @"/sample-data/1-retailsales-Line1.json", "", "")]
public async Task SuccessAndCompleteMessage(string inputFile, string outputFile1, string outputFile2, string origOrderFile)
{
//Arrange
var inputFileContent = File.ReadAllText($@"{Environment.CurrentDirectory}{inputFile}");
var saleDto = JsonConvert.DeserializeObject(inputFileContent);

var outputFileContent1 = File.ReadAllText($@"{Environment.CurrentDirectory}{outputFile1}");
var outputFileContent2 = File.ReadAllText($@"{Environment.CurrentDirectory}{outputFile2}");

var lockToken = Guid.NewGuid().ToString();
var fixture = new Fixture();
var msg = new ServiceBusRetailSalesMessage();
msg.CallbackUrl = "https://api-dev.col.com/retailsales-ser ... 4&store=61";

var testMessage = ServiceBusModelFactory.ServiceBusReceivedMessage(new BinaryData(Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(msg))));

var response = new HttpResponseMessage();
response.StatusCode = System.Net.HttpStatusCode.OK;
response.Content = new StringContent(JsonConvert.SerializeObject(msg));

_mockServiceBusMessageReceiver.Setup(x => x.ParseServiceBusMessage(It.IsAny()))
.Returns(msg);

if (!origOrderFile.IsNullOrWhiteSpace())
{
var originalOrderContent = File.ReadAllText($@"{Environment.CurrentDirectory}{origOrderFile}");
var originalOrder = JsonConvert.DeserializeObject(originalOrderContent);

_mockDtoHttpService.SetupSequence(x => x.GetDtoAsync(It.IsAny()))
.Returns(Task.FromResult(saleDto))
.Returns(Task.FromResult(originalOrder));
}
else
{
_mockDtoHttpService.Setup(x => x.GetDtoAsync(It.IsAny()))
.Returns(Task.FromResult(saleDto));
}

_mockAdapterAuthHttpService.Setup(x => x.GetCurrentWriteTokenAsync(It.IsAny()))
.Returns(Task.FromResult(response));
_mockAdapterAuthHttpService.Setup(x => x.PostNewTokenRequest(It.IsAny(), It.IsAny()))
.Returns(Task.FromResult(response));

_mockAdapterService.Setup(x => x.PostAsync(It.IsAny(), It.IsAny()))
.Returns(Task.FromResult(response));

_mockAdapterService.Setup(x => x.GenerateEventId())
.Returns("");

ProcessTransactionConfig processTransactionConfig = new ProcessTransactionConfig
{
DataLakeWriteEnabled = true,
MaxRetryCount = 3
};

var config = new DataLakeConfiguration
{
DataLakePaths = "DummyPath"
};

_options.Setup(x => x.Value).Returns(config);
_configuration.Setup(c => c.Value).Returns(processTransactionConfig);

var sut = new RetailSalesToVendor(_mockDtoHttpService.Object,
_mockAdapterService.Object,
_mockAdapterAuthHttpService.Object,
_mockServiceBusMessageReceiver.Object,
_dateLakeClient.Object,
_options.Object,
_mapper,
_mockServiceBusClient.Object,
_mockLogger.Object,
_configuration.Object);

//Act
await sut.RunAsync(testMessage, _messageAction.Object, lockToken);

//Assert
_mockServiceBusMessageReceiver.Verify(x => x.ParseServiceBusMessage(testMessage), Times.Once());
_mockServiceBusMessageReceiver.Verify(x => x.CompleteMessageAsync(It.IsAny(), It.IsAny(), It.IsAny()), Times.Once());
_mockAdapterService.Verify(x => x.PostAsync(It.Is(o => TestEqualityUsingJson(NormalizeDates(o), outputFileContent1)), It.IsAny()), Times.Once());
if (outputFileContent2 != null)
_mockAdapterService.Verify(x => x.PostAsync(It.Is(o => TestEqualityUsingJson(NormalizeDates(o), outputFileContent2)), It.IsAny()), Times.Once());
_mockAdapterAuthHttpService.Verify(x => x.GetCurrentWriteTokenAsync(It.IsAny()), Times.AtLeastOnce());
_mockDtoHttpService.Verify(x => x.GetDtoAsync(It.IsAny()), Times.AtLeastOnce());
}
< /code>
Я предполагаю, что, возможно, есть что -то, что мне нужно добавить в настройку _mockadapterservice, чтобы вернуть несколько результатов, и, как вы можете видеть выше, я дублировал линию _mockadapterservice.Verify, чтобы я мог пройти тестирование Равенство обеих строк 1 и 2 против результатов.
Мне никогда не было необходимости делать такого рода тестирование раньше, поэтому любые предложения относительно того, как я могу справиться с этим, были бы очень оценены. < /p>

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

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

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

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

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

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

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