1

Я только что начал с модульного тестирования с помощью Nunit с моим проектом WebApi.Тестирование устройства с использованием Nunit дает ошибку

Я разработал один тест для моего контроллера:

private readonly INewsBusinessLogic _newsBusinessLogic; 

[Test] 
public async Task GetAllNews() 
{ 
    // Arrange 
    var controller = new NewsController(_newsBusinessLogic); 

    controller.Configuration = new System.Web.Http.HttpConfiguration(); 
    controller.Request = new System.Net.Http.HttpRequestMessage(); 

    // Act 
    var actionResult = await controller.Get(); 

    //assert 
    Assert.IsNotNull(actionResult); 
} 

Api контроллера:

public class NewsController : ApiController 
{ 
    private readonly INewsBusinessLogic _newsBusinessLogic; 

    public NewsController(INewsBusinessLogic newsBusinessLogic) 
    { 
     _newsBusinessLogic = newsBusinessLogic; 
    } 

    public async Task<IHttpActionResult> Get() 
    { 
     return Ok(await _newsBusinessLogic.GetNewsUpdates()); 
    } 
} 

Когда я отлаживать тест он дает мне ошибку NullReferenceExceptionна Закон, хорошо Я очень хорошо знаю, что What is a NullReferenceException?. Но не могу понять, почему это произошло и как его решить.

Сторона Примечание: Я не использую ORM.

+1

хорошо для одного, вы передаете в 'null' переменного в' NewsController' конструктора, как вы не показаны в вашем примере, где значение присваивается '_newsBusinessLogic' – Nkosi

+0

вы неправильно понимаете. В тесте вы не присвоили значение переменной, поэтому почему это null – Nkosi

ответ

2

хорошо для одного, вы передаете в null переменной в NewsController конструктору, как вы не показано в вашем примере, где значение присваивается _newsBusinessLogic

Вот пример использования Moq как издеваться зависимость контроллера

[Test] 
public async Task GetAllNews() 
{ 
    // Arrange 
    var newsBusinessLogicMock = new Mock<INewsBusinessLogic>(); 
    newsBusinessLogicMock 
     .Setup(m => m.GetNewsUpdates()) 
     .ReturnsAsync("{your desired return here}"); 

    var controller = new NewsController(newsBusinessLogicMock.Object); 

    controller.Configuration = new System.Web.Http.HttpConfiguration(); 
    controller.Request = new System.Net.Http.HttpRequestMessage(); 

    // Act 
    var actionResult = await controller.Get(); 

    //assert 
    Assert.IsNotNull(actionResult); 
} 
+0

Спасибо !, ошибка ушла, но 'actionResult' получает нулевой результат, можете ли вы рассказать мне возможную причину. –

+0

Что вы установили для 'ReturnsAsync' в аранжировке теста? – Nkosi

+0

Я установил 'List ' like '.ReturnsAsync (новый список ());' –

 Смежные вопросы

  • Нет связанных вопросов^_^