Модульное тестирование DisplayFormat с помощью HtmlHelper - PullRequest
1 голос
/ 21 июля 2011
MyModel _model = new MyModel() { PriceDate = new DateTime(2000, 1, 1)};

var helper = new System.Web.Mvc.HtmlHelper<MyModel>(new ViewContext(), new ViewPage());
var result = helper.DisplayFor(m => _model.PriceDate);

Assert.That(result, Is.EqualTo(expected));

Я хочу проверить, что вывод, полученный с помощью вызова DisplayFor, имеет формат, указанный ...

[DisplayFormat(DataFormatString = "{0:dd/MM/yy}")]
public DateTime? PriceDate { get; set; }

Код компилируется, но завершается с ошибкой NullReferenceException в DisplayFor.

Может кто-нибудь помочь мне сделать эту работу?

(Примечание: это тривиальный пример более крупной проблемы)

Ответы [ 2 ]

2 голосов
/ 28 июля 2011

Шаги довольно длинные, поэтому я не мог написать здесь. Я написал об этом в своем блоге: D

http://thoai -nguyen.blogspot.com / 2011/07 / блок-тест-DisplayFormat-attribute.html

Приветствия

1 голос
/ 25 мая 2012

Я использую следующий код для тестирования и валидации помощников HTML.

Валидация является еще одним примером.

Попробуйте выполнить следующее:

    var sb = new StringBuilder();
    var context = new ViewContext();
    context.ViewData = new ViewDataDictionary(_testModel);
    context.Writer = new StringWriter(sb);
    var page = new ViewPage<TestModel>();
    var helper = new HtmlHelper<TestModel>(context, page);

    //Do your stuff here to exercise your helper

    //Following example contains two helpers that are being tested
    //A MyCustomBeginForm Helper and a OtherCoolHelperIMade Helper
    using(helper.MyCustomBeginForm("secretSauce"))
    {
       helper.ViewContext.Writer.WriteLine(helper.OtherCoolHelperIMade("bigMacSauce"));
    }
    //End Example

    //Get the results of all helpers
    var result = sb.ToString();

    //Asserts and string tests here for emitted HTML
    Assert.IsNotNullOrEmpty(result);
...