2015-05-08 4 views
-1

Я реализовал Ninject в MVC проекта, и это работает, как ожидается, теперь я хотел модульное тестирование, но не может заставить его работать:IdependencyResolver всегда нуль в единичном испытании, используя малое количество заказа

контроллер:

private IDependencyResolver _resolver; 

public HomeController(IDependencyResolver resolver) 
{ 
     _resolver = resolver; 
} 

    public ActionResult Index() 
    { 
     var model = _resolver.GetService<ISignUpViewModel>(); 
     return PartialView("Login", model); 
    } 

Test Unit

private IDependencyResolver _resolverMock; 

    [TestMethod] 
    public void SignUpTest() 
    { 

     var ctrl = new HomeController(_resolverMock); 
     var signUpMock = new Mock<ISignUpViewModel>(); 

     ctrl.Index(); 
     ctrl.ViewData.Model = signUpMock; 

     //Assert.AreEqual("", ""); 

    } 

Разрешитель всегда нуль.

Ive посмотрел на Ninject.MockingKernel.Moq, должен ли я установить распознаватель там?

Любая идея, где я ошибаюсь?

Благодаря

+1

Вы когда-нибудь инициализировали '_resolverMock'? – Lukazoid

+0

Я не инициализирую – Tau7

+0

Причина, по которой он равен нулю, заключается в том, что вы никогда не устанавливали его как непустую. – danludwig

ответ

0

В модульном тесте вручную создать HomeController экземпляр, так что вам нужно макет IDependencyResolver. Например:

var resolverMock = new Mock<IDependencyResolver>(); 
var ctrl = new HomeController(resolverMock.Object); 
.... 
+0

Он должен быть 'new HomeController (resolverMock.Object);' – danludwig

+0

Я получаю сообщение об ошибке: Не удается неявно преобразовать тип 'Moq.Mock ' в 'System.Web.Mvc.IDependencyResolver'. Явное преобразование существует (вы пропускаете листинг?) – Tau7

+0

@danludwig Да, вы правы –

Смежные вопросы