Инициализация внутренних переменных с помощью Moq в модульном тестеC#

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

Сообщение Anonymous »

Я пытаюсь создать модульный тест для контроллера, который возвращает код состояния на основе вызова службы. Поскольку тест на самом деле не вызывает службу, поток управления выдает исключение нулевой ссылки во время выполнения теста. Я надеюсь, что кто-нибудь сможет помочь с решением этой проблемы.
Спасибо
Контроллер:

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

     [HttpPost]
public async Task CreateTransaction([FromBody] TransactionReqDto payload)
{

if (payload == null) return BadRequest();
var res = await _service.CreateTransactionAsync(payload);

switch (res.Status)
{
case true:
return Ok(res);
case false:
return UnprocessableEntity(res);
}
}
Модульный тест:

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

   public async Task CreateTransaction_OnSuccess_ReturnStatusCode200()
{
//Arrange
var mockTransactionService = new Mock();
var transactionRequest = TransactionFixture.CreateTransaction();
var transactionResponse = new TransactionResDto { Status = true };
mockTransactionService.Setup(service => service.CreateTransactionAsync(transactionRequest))
.ReturnsAsync(transactionResponse);
var mockTransactionController = new TransactionController(mockTransactionService.Object);
//Act
var result = (OkObjectResult) await mockTransactionController.CreateTransaction(TransactionFixture.CreateTransaction());
//Assert
result.Should().BeOfType();
}
Ошибка при выполнении теста:

Сообщение: 
System.NullReferenceException: ссылка на объект не установлена ​​на экземпляр объекта.

Трассировка стека: 
TransactionController.CreateTransaction(TransactionReqDto payload) line 35
TransactionControllerUnitTest.CreateTransaction_OnSuccess_ReturnStatusCode200() line 57
--- Конец трассировки стека из предыдущего местоположения ---
Я отладил код и понял, что переменная "res" возвращает значение null, поскольку метод createTransactionAsync не был вызван.
Любая помощь по этому поводу буду признателен.

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

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

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

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

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

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

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