Я обновил вопрос с интерфейсами конвейера, которые я до сих пор издевался. .. что еще потребуется для «полного» интеграционного теста с доступом ко всем зависимостям?

ьзуемая мной среда управления UX требует метода расширения на контроллерах MVC. Ссылка на нулевой объект генерируется, когда nUnit пытается вызвать этот метод (используется для упаковки частичного представления в Json).

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

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

Метод Controller Create () возвращает результирующий фрагмент из метода расширения:

return Json(new { Content = viewRender.RenderPartialView(this, "ListItems/SimpleSyllabi", new[] { nS }) });

Подпись метода расширения

 public static string RenderPartialView(this Controller controller, string viewName, object model = null, bool removeWhiteSpace = true);

Ошибка проста:

System.NullReferenceException: 'Object reference not set to an instance of an object.'

Результат StackTrace:

at System.Web.Mvc.VirtualPathProviderViewEngine.FindPartialView(ControllerContext controllerContext, String partialViewName, Boolean useCache)
   at System.Web.Mvc.ViewEngineCollection.<>c__DisplayClass2.<FindPartialView>b__0(IViewEngine e)
   at System.Web.Mvc.ViewEngineCollection.Find(Func`2 lookup, Boolean trackSearchedPaths)
   at System.Web.Mvc.ViewEngineCollection.FindPartialView(ControllerContext controllerContext, String partialViewName)
   at Omu.AwesomeMvc.ControllerExtensions.RenderView(Controller controller, String viewName, Object model, String master, Boolean partial, Boolean removeWhiteSpace)
   at Omu.AwesomeMvc.ControllerExtensions.RenderPartialView(Controller controller, String viewName, Object model, Boolean removeWhiteSpace)
   at Flipprs.nUnitHelpers.Awesome.ViewRender.RenderPartialView(Controller controller, String viewName, Object model, Boolean removeWhiteSpace) in A:\Stephan\Source\Workspaces\AchievementCards\Develop-Payment(v0.0.11.0)\Flipprs.Web\Helpers\Awesome\nUnitHelpers.cs:line 17
   at Flipprs.Controllers.SyllabusAjaxListController.Create(SyllabusCreateViewModel scvm) in A:\Stephan\Source\Workspaces\AchievementCards\Develop-Payment(v0.0.11.0)\Flipprs.Web\Controllers\SyllabusAjaxListController.cs:line 217
   at Flipprs.Tests.Controllers.SyllabusAjaxListControllerTest.SyllabusAjaxListController_CreatePUT_ReturnsJson(String HTTPreqAUEmail) in A:\Stephan\Source\Workspaces\AchievementCards\Develop-Payment(v0.0.11.0)\Flipprs.Tests\Controllers\SyllabusAjaxListControllerTest.cs:line 484
Result Message: System.NullReferenceException : Object reference not set to an instance of an object.

Интеграционный тест «Настройка»:

 private IViewRender viewRender;

viewRender = new ViewRender();



controller = new SyllabusAjaxListController(viewRender, photoPlaceholderService, activityService, syllabusService,
            userService, organisationService, userManager);

Затем в тесте (выдержки)

  [Test, Sequential]
            public void SyllabusAjaxListController_CreatePUT_ReturnsJson()
{
    ActionResult result_ar = controller.Create(validModel);

            JsonResult result = result_ar as JsonResult;
}

Интеграционные тестовые макеты

        Mock<ControllerContext> controllerContext;
        Mock<HttpContext> httpContext;
        Mock<HttpContextBase> contextBase;
        Mock<HttpRequestBase> httpRequest;
        Mock<HttpResponseBase> httpResponse;

        Mock<IIdentity> identity;
        Mock<IPrincipal> principal;
        Mock<GenericPrincipal> genericPrincipal;

Ответы на вопрос(1)

Ваш ответ на вопрос