MVC Unit Test Расширение RadioButton Helper - PullRequest
0 голосов
/ 06 сентября 2011

в одном из моих других вопросов я получил этот действительно отличный ответ для вспомогательного метода:

using System;
using System.Linq.Expressions;
using System.Web;
using System.Web.Mvc;
using System.Web.Mvc.Html;

public static class RadioExtensions
{ 
    public static IHtmlString MyRadioButtonFor<TModel, TProperty>(
        this HtmlHelper<TModel> html,
        Expression<Func<TModel, TProperty>> ex,
        object value
    )
    {
        var isAuthenticated = html.ViewContext.HttpContext.User.Identity.IsAuthenticated;
        if (isAuthenticated)
        {
            return html.RadioButtonFor(ex, value);
        }

        return html.RadioButtonFor(ex, value, new { @disabled = "disabled" });
    }
}

В любом случае, я пытаюсь провести модульное тестирование этого:

[Test]
        public void RadioButtonHelper()
        {
            var cc = new Mock<ControllerContext>(
                new Mock<HttpContextBase>(),
                new RouteData(),
                new Mock<ControllerBase>());

            var mockViewContext = new Mock<ViewContext>(
                cc,
                new Mock<IView>(),
                new TempDataDictionary());

            var mockViewDataContainer = new Mock<IViewDataContainer>();

            HtmlHelper helper = new HtmlHelper(mockViewContext.Object, mockViewDataContainer.Object);

            helper.
        }

Когда я получаюв части вызова метода я не могу добраться до метода.

Кто-нибудь знает, как это сделать?

Ответы [ 2 ]

0 голосов
/ 06 сентября 2011

Чтобы проверить свой статический помощник, просто сделайте что-то вроде этого

[Test]
public void MyHelperTests()
{
  HtmlHelper html = null;
  var result = html.MyRadioButtonFor(/* your params */);
  Assert.IsInstanceOfType(typeof(MvcHtmlString), result);
  Assert.AreEqual(/* your results */, result.ToString());
}
0 голосов
/ 06 сентября 2011

Попробуйте включить пространство имен в расширение как using вверху.

...