2017-02-13 4 views
1

Я пытаюсь выяснить, как протестировать мою библиотеку Ninject. Я имею в виду, что в моей библиотеке используется ядро ​​Ninject, чтобы разрешить все их зависимости. Это основной класс моей библиотеки:Тестирование с помощью ninject и nsubstitute

public class Core : ICore { 

    private Ninject.IKernel compositionRoot; 

    public Core() 
    { 
     this.state = KernelState.initializing; 
     this.backends = new Dictionary<Core.Identity.DomainIdentity, Backend.Infrastructure.IBackend>(); 

     this.BuildIoC(compositionRoot); 

     this.configuration = this.compositionRoot.Get<Core.Configuration.ICoreConfiguration>(); 
     this.serviceHost = this.compositionRoot.Get<System.ServiceModel.ServiceHost>(); 
    } 

где BuildIoC() является:

internal void BuildIoC(Ninject.IKernel compositionRoot = null) 
    { 
     this.compositionRoot = compositionRoot ?? new Ninject.StandardKernel(
      new IoC.Modules.BackendModule(), 
      new IoC.Modules.PluginsModule(), 
      new IoC.Modules.ConfigurationModule(), 
      new IoC.Modules.ServiceModule(this)); 
    } 

В настоящее время, мне нужно построить несколько тестов на этом классе. Итак:

  1. Я хотел бы «макет» configuration и serviceHost полей. Как я мог это получить?
  2. Что такое NSubstituteMockingKernel подставка именно для? Я не совсем понимаю, для чего это.

До сих пор я не смог добиться ничего элегантного. Я не знаю, что такое mock, ninject kernel, modules, classes?

Например, serviceHost является реализацией веб-сервиса. Я бы хотел, чтобы класс Core загрузил насмешливый объект configuration ... Как я буду действовать, чтобы это получить?

Библиотеке следует использовать рамки IoC?

+0

Это может помочь http://stackoverflow.com/questions/18545983/ninject-auto-mocking-using-substitute –

+0

Спасибо, Александр. Я уже читал немного раньше. Тем не менее, я не совсем понимаю, что решает NSubstituteMockingKernel? – Jordi

+0

Это один из библиотеки под названием Ninject.MockingKernel. Вы можете найти некоторые документы на github https://github.com/ninject/Ninject.MockingKernel/wiki –

ответ

0

Я довольно новичок в тестировании устройств, но это мои любимые библиотеки для насмешек и IoC. То, что я делал в прошлом и работало для меня (и я не говорю, что это лучший способ), состояло в том, чтобы позволить экземпляру NInject зависимостям во время выполнения, которые система должна потреблять. Но для тестов я вручную создаю экземпляры с помощью NSubstitute, и я ввожу их через конструкторы (NInject не задействован). Иногда может потребоваться часть «Упорядочить» (из шаблона AAA). Наверное, должен быть лучший способ, но это сработало для меня. Надеюсь это поможет.

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