ASP .net блок тестирования контроллера с использованием MOLES - PullRequest
1 голос
/ 03 июня 2011

Как я могу выполнить модульное тестирование контроллера, который содержит HttpConext с использованием среды Moles?Мой код для контроллера:

public ActionResult Index()
        {
             MyRepositoryClass myRepo = new MyRepositoryClass (System.Web.HttpContext.Current);
             string fs = ipser.GetCityName();
             return View();
        }

My code for the controller in unit test project is
public class MyClassTest
{

   [TestMethod]
   [HostType("Moles")]
    public void Index_Test()
    {
         string originalViewName="Index";
         MyController myContl = new MyController ();
         var result =myContl.Index() as ViewResult;
         Assert.IsNotNull(result, "Should return a view");
         Assert.AreEqual(originalViewName, result.ViewName, "View name should have been {0}", originalViewName);
    }

Как мне проверить мой контроллер с помощью Moles Framework?

1 Ответ

1 голос
/ 13 августа 2011

Быстрый ответ: не используйте Родинки, вместо этого удалите свою зависимость от статического объекта HttpContext.

Если вы используете HttpContextBase (в System.Web.Abstractions в .NET 4.0) вместо HttpContext, выВы сможете предоставить поддельный HttpContext в ваших модульных тестах.Вам нужно будет использовать IoC-контейнер в приложении MVC и убедиться, что вы настраиваете HttpContextWrapper (HttpContext.Current) в HttpContextBase при настройке контейнера IoC.

В Интернете достаточно информации о том, как это делается.Просто Google для HttpContextBase, HttpContextWrapper и MVC, и я уверен, что вы найдете множество примеров кода и объяснений, которые помогут вам.

...