2010-02-16 5 views
0

Я знаю, что это было предложено раньше, но я не могу найти его так ...тестирование ActionResult с формой представления модели

Скажем, у меня есть контроллер с именем HomeController и имеет действие под названием Логин.

В моем действии Login используется модель LoginFormViewModel.

Внутри моего действия я могу написать код типа;

public ActionResult Login(LoginFormViewModel loginFVM) 
    { 
     if (ModelState.IsValid) 
     { 
      return RedirectToAction("provider"); 
     } 

     return View(loginFVM); 
    } 

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

EDIT

Я думаю, что, возможно, запутал вопрос немного.

В моей модели у меня есть проверка, которая проверяет, что имя пользователя заполнено и что пароль соответствует нашим требованиям.

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

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

Если есть лучший способ, я бы хотел его получить.

+0

В чем вопрос? Действия контроллера - это такие методы, как что-то еще, поэтому в одном тесте вы должны пройти Login() действительную модель, а в другом тесте вы должны пройти Login() и недопустимую модель. Вы спрашиваете, как писать тесты, как создавать модели или что-то еще? –

+0

Я спрашиваю, как написать тест в рамках проекта тестов, созданного при создании нового проекта. – griegs

+0

@Jacob да, и я внес изменения, хотя это не является существенным вопросом. – griegs

ответ

1

Если вы проверяете, чтобы убедиться, что ваша модель передается через точки зрения правильно:

[Test] 
public void Login_Should_Set_Model() 
{ 
    var controller = new HomeController(); 
    var model = CreateMockLoginFormViewModel(); 
    var result = controller.Login(model) as ViewResult; 

    Assert.AreEqual(model, result.ViewData.Model); 
} 

UPDATE Поскольку ОР заинтересован в тестировании, является ли или не MVC проверки модели, я нашел эта ссылка может быть полезной: Testing DataAnnotation-based validation in ASP.NET MVC

+0

Спасибо @HackedByChinese, но вы можете проверить мое редактирование. – griegs

+0

Я вижу. Я думаю, что здесь проблема заключается в том, следует ли тестировать возможности MVC для проверки. Возможно, вам будет лучше подобрать совместимую систему и технику проверки и вместо этого сосредоточиться на правильной проверке ваших моделей и тестировании * на *, а не на сантехнике MVC. Хотя я мог ошибаться. – HackedByChinese

+0

Я слышал, что вы говорите, но я бы очень хотел протестировать его на основе взгляда и перейти в модели, которые могут пройти или провалиться. +1 для вашего решения здесь, поскольку я думаю, что могу использовать его в другом месте. – griegs

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