Разрешение зависимостей конструктора контроллера в модульных тестах Asp.Net MVC с помощью Ninject - PullRequest
1 голос
/ 28 ноября 2011

Я не уверен, как использовать Ninject для автоматического разрешения зависимостей конструктора для моих контроллеров в моих модульных тестах.

В моем реальном приложении я настроил внедрение зависимостей в свой gloabl.asax следующим образом:

public void SetupDependencyInjection()
    {
        IKernel kernel = new StandardKernel();

        kernel.Bind<ISomeService>().To<SomeService>();

        DependencyResolver.SetResolver(new NinjectDependencyResolver(kernel));
    }

У меня есть контроллер с конструктором:

public SomeController (ISomeService someService)

Это все работает нормально, каким-то волшебным образом конструктор SomeController вызывается с someService в качестве аргумента. Я понятия не имею, как бы я повторил это поведение в моих модульных тестах, хотя. То есть я хотел бы настроить свои юнит-тесты так, чтобы мне не приходилось создавать свои контроллеры через конструктор - я бы хотел, чтобы это делалось так же, как в реальном приложении.

Спасибо за любую помощь заранее!

1 Ответ

0 голосов
/ 28 ноября 2011

Я понятия не имею, как бы я повторил это поведение в моих модульных тестах

В своем модульном тесте вы можете использовать фреймворк, такой как Rhino Mocks или Moq , чтобы сгенерировать фиктивные объекты для ваших зависимостей и определить ожидания от них.

Пример с Moh Rhino:

[TestMethod]
public void Test_Something()
{
    // arrange
    var serviceMock = MockRepository.GenerateStub<ISomeService>();
    serviceMock.Stub(x => x.SomeMethod(123)).Return("foo bar");
    var sut = new SomeController(serviceStub);

    // act
    var actual = sut.SomeAction();

    // assert
    // TODO: assert on the result
}
...