2012-06-25 2 views
1

У меня есть Action как ниже:Как проверить свойства модели в единичном испытании

public ActionResult SaveAndExit() 
{ 
    ViewModel1 viewModel = new ViewModel1(); 

    return View("Index", viewModel); 
} 

В Test Unit я хочу, чтобы проверить, если вид Reg в ViewModel равна нулю или нет. любые предложения, пожалуйста,

Тест:

//act 
var result = controller.SaveAndExit(viewModel) as ViewResult; 

//assert 
//Assert.IsNotNull(!result.Model["Reg"].Equals(null)); 
+2

Это утверждать довольно запутанным ... Вы проверяете, если что-то не null, а затем проверить, что результат не равен нулю. Не работает ли это самостоятельно? Assert.IsNotNull (result.Model ["Reg"]) –

+0

Право. Вы вызываете 'Assert.IsNotNull (boolean)' – hometoast

+0

@GazWinter, эта строка кода неверна. модель не позволяет получить доступ к своим свойствам. спасибо – user1211185

ответ

7

Я бы, как правило, писать утверждает следующим образом (с использованием тест рамки Microsoft утверждает, здесь - вы не указали NUnit):

// Act 
ActionResult result = controller.SaveAndExit(viewModel); 

// Assert 
Assert.IsInstanceOfType(result, typeof(ViewResult)); 
ViewResult viewResult = (ViewResult)result; 

Assert.IsInstanceOfType(viewResult.Model, typeof(ViewModel1)); 
ViewModel1 model = (ViewModel1)viewResult.Model; 

Assert.IsNotNull(model.Reg); 
+0

Привет, в модели отладки reg имеет значение null, но его бросание Исключение 'Assert.IsNotNull failed .' – user1211185

+0

@ user1211185 Вот в чем смысл Assert. Вы утверждаете, что Reg не является нулевым, и если да, то ваш тест должен завершиться неудачно. – magritte

+0

** Работал ** заменил 'Assert.IsNotNull (model.Reg);' с 'Assert.IsNull (model.Reg);' .... большое спасибо – user1211185

0

Юнит-тесты должны проверить бизнес-логику. Вам не нужно писать единичный тест только для проверки некоторого свойства для null.

+1

Если, возможно, вы не исправляете ошибку, которая бросает исключение нулевой ссылки при визуализации представления. Нет причин, чтобы это не было «достойным» испытанием. – hometoast

+1

@ user1211185, я предлагаю взглянуть на [Рекомендации по эффективному тестированию устройств] (http://osherove.com/videos/2009/8/25/unit-testing-best-practices.html). Конечно, эта ссылка будет полезна для вас в любом случае. – Shymep