2015-09-09 2 views
0

Я пытаюсь узнать, как сделать единичный тест, который действительно проверяет какой-либо код, и посмотреть, есть ли проблема или нет. Я никогда раньше не работал с модульным тестом, но видел некоторые обучающие программы, чтобы увидеть, как построить тестовый класс.Проверка модульных данных входных полей в asp.net

Я создал небольшой проект с testboxes, где пользователь может ввести его: Firstname, Lastname, электронная почта, телефон, Адрес Я хочу сделать тест модуля, который проверяет, является ли введенная правомочно (не пусто)

Возможно ли это?

Мой код:

public class HomeController : Controller 
{ 
    [HttpGet] 
    public ActionResult Index() 
    { 
     UserModel um = new UserModel(); 

     return View(um); 
    } 

    [HttpPost] 
    public ActionResult Index(UserModel um) 
    { 
     if (ModelState.IsValid) 
     { 
      Session["SelectedValues"] = um; 
      return RedirectToAction("Index", "Result", new { model = um }); 
     } 
     return View(um); 
    } 

} 

Индексный (HomeController)

<div class="col-sm-12"> 

@using (Html.BeginForm()) 
{ 

<div class="row"> 
    <div class="col-sm-6"> 
     @Html.Label("First name:")<br /> 
     @Html.TextBoxFor(m => m.FirstName, new { @class = "textbox" }) 

     <br /> 

     @Html.Label("Last name:")<br /> 
     @Html.TextBoxFor(m => m.LastName, new { @class = "textbox" }) 

    </div> 

    <div class="col-sm-6"> 

     @Html.Label("Email:")<br /> 
     @Html.TextBoxFor(m => m.Email, new { @class = "textbox" }) 

     <br /> 

     @Html.Label("Phone number:")<br /> 
     @Html.TextBoxFor(m => m.PhoneNumber, new { @class = "textbox" }) 

    </div> 
</div> 
<div class="row"> 
    <div class="col-sm-10"> 
     @Html.Label("Address:")<br /> 
     @Html.TextBoxFor(m => m.Address, new { @class = "textbox"}) 
    </div> 

    <div class="col-sm-2"> 
     @Html.Label("Address number:")<br /> 
     @Html.TextBoxFor(m => m.AddressNr, new { @class = "textbox" }) 
    </div> 

</div> 

<br /> 

<div class="row"> 
    <div class="col-sm-12"> 
     <button class="button" type="submit">Submit</button> 
    </div> 
</div> 
} 
</div> 

ResultController

public class ResultController : Controller 
{ 
    // GET: Result 
    public ActionResult Index() 
    { 
     UserModel um = Session["SelectedValues"] as UserModel; 
     return View(um); 
    } 
} 

Index View (ResultController)

<div> 
<h4>UserModel</h4> 
<hr /> 
<dl class="dl-horizontal"> 
    <dt> 
     @Html.DisplayNameFor(model => model.FirstName) 
    </dt> 

    <dd> 
     @Html.DisplayFor(model => model.FirstName) 
    </dd> 

    <dt> 
     @Html.DisplayNameFor(model => model.LastName) 
    </dt> 

    <dd> 
     @Html.DisplayFor(model => model.LastName) 
    </dd> 

    <dt> 
     @Html.DisplayNameFor(model => model.PhoneNumber) 
    </dt> 

    <dd> 
     @Html.DisplayFor(model => model.PhoneNumber) 
    </dd> 

    <dt> 
     @Html.DisplayNameFor(model => model.Email) 
    </dt> 

    <dd> 
     @Html.DisplayFor(model => model.Email) 
    </dd> 

    <dt> 
     @Html.DisplayNameFor(model => model.Address) 
    </dt> 

    <dd> 
     @Html.DisplayFor(model => model.Address) 
    </dd> 

    <dt> 
     @Html.DisplayNameFor(model => model.AddressNr) 
    </dt> 

    <dd> 
     @Html.DisplayFor(model => model.AddressNr) 
    </dd> 

</dl> 
</div> 

Я хочу создать тест, прежде чем я добавить проверку, слишком увидеть тест блока в действии .. может кто-нибудь объяснить или помочь мне, что я должен делать?

Мой тестовый класс

namespace UnitTestApplication.Tests 
{ 
[TestClass] 
public class ValidationOfInputFieldTest 
{ 

    [TestMethod] 
    public void TestIfInputFieldsAreValidated() 
    { 

    } 
} 
} 

ответ

0

Цель модульных тестов для контроллеров MVC это проверить, что контроллеры правильно себя. В контексте модульного тестирования вы никогда не попадаете в представление или не взаимодействуете с представлением. Вы просто подтверждаете, что модель, возвращаемая контроллером, верна, что модель правильно обновляется после отправки на контроллер и т. Д.

То, что вы хотите достичь, называется UI test, и оно изменяет взаимодействие пользователя. Вы не можете достичь этого с помощью unit test.

Что вы можете достичь с помощью единичного теста: вы можете протестировать постконтроллер, предоставив образцы моделей, отправленные контроллеру с изменением действительных и недопустимых состояний модели, чтобы убедиться, что контроллер правильно заполняет Session только тогда, когда действителен ModelState и т. д.

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