2016-08-12 4 views
-1

Я новичок в модульном тестировании в ASP.NET, поэтому, пожалуйста, простите мое невежество по этому поводу. Я пытаюсь проверить свой контроллер.Модульное тестирование Web API-контроллер: результат получения ошибки

Это функция в мой контроллер, который я тестирование:

public IHttpActionResult GetCustId(string name) 
{ 
    var c_id = db.Customer.Where(s => (s.c_Name == name)); 

    if (c_id == null) 
    { 
     return null; 
    } 

    return Ok(c_id); 
} 

И это мой блок кода тест:

public void GetName_ShouldReturnCorrectId() 
{ 
    var context = new TestSContext(); 
    context.Customers.Add(new Customer { c_ID = 1, c_Name = "jonny"}); 

    var controller = new CustomerController(context); 
    var result = controller.GetCustId("Johnny") as OkNegotiatedContentResult<Customer>; //ISSUE: Result is always NULL 

    Assert.IsNotNull(result); 
    Assert.AreEqual(1, result.Content.c_ID); 
} 

вопрос здесь:

var result = controller.GetServiceId("Johnny") as OkNegotiatedContentResult<Customer> 

, потому что он всегда возвращает NULL.

НО ... Если я использую только это:

var result = controller.GetCustId("Johnny"); 

Тогда результат не является нулевым. И первое утверждение проходит.

Но я не могу использовать его, потому что я не уверен, как проверить второй оператор assert без использования result.Content. Я действительно не уверен, какие тесты лучше всего тестировать в моем случае.

Цените любую помощь.

+0

Я не понимаю раздел о 'GetServiceId'; вы написали, что 'GetCustId' - это метод, который вы пытаетесь проверить ... о первом утверждении, вы можете удалить его, второе утверждение сделает сбой, если результат будет нулевым. В чем проблема с результатом. Content'? –

ответ

1

Вы пытаетесь найти "Johnny" (с «ч»), когда вы поставили "jonny" в ваш макет context таким образом, метод всегда возвращает null из-за вашей, если заявление

if (c_id == null) 
{ 
    return null; 
} 
0

Добавление к @ nizzik отвечают, что исправьте на основе вашего примера, чтобы избежать простых ошибок, таких как вы должны хранить ваши значения в переменных и повторно использовать их, чтобы убедиться, что они предназначены.

Таким образом, вы можете изменить любой из них, и тест должен выполняться так, как ожидалось.

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