У меня есть приложение ASP.NET MVC с контейнером NInject для инъекции зависимостей. Как и было объявлено, IoC позволяет мне легко тестировать компоненты изолированно, а затем легко компоновать компоненты в приложении.Как проверить использование DI (NInject)
Я хочу проверить свое использование DI. Я не хочу проверять правильность работы компонента DI. Я верю, что люди NInject делают это довольно хорошо. Я хочу проверить, что я использовал DI для правильной компоновки компонентов в отношении намерений моего приложения. Я не хочу тестировать NInject, я хочу проверить свое использование NInject. (Я также не хочу пытаться классифицировать это как единичный тест или тест интеграции. Я только хочу, чтобы когда-нибудь, прежде чем я дошел до производства, продемонстрировал, почему я уверен, что мое конкретное использование NInject работает.)
Предположим, у меня есть что-то вроде:
private static void RegisterDatabaseConnections(IBindingRoot kernel)
{
string connectionString = ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString;
kernel.Bind<IProvideDbConnections>()
.To<Connector>()
.WhenInjectedInto<ActivityStore>()
.WithConstructorArgument("connectionString", connectionString);
kernel.Bind<IProvideDbConnections>()
.To<Connector>()
.WhenInjectedInto<CrConnector>()
.WithConstructorArgument("connectionString", connectionString);
kernel.Bind<IProvideDbConnections>()
.To<CrConnector>()
...
}
Где-то у меня есть:
public class Writer
{
public Writer(IProvideDBConnections connector)
{
Connector = connector;
}
private IProvideDBConnections Connector { get; set; }
....
}
Я хотел бы написать MSTest как
[TestMethod]
public void TestThatWriterCrConnectorContainsConnector()
{
...
}
, чтобы я мог проверить, что я написал RegisterDatabaseConnections
, чтобы дать мне то, что я ожидаю. У меня возникли проблемы с запуском этого пути, потому что я не знаю, как получить доступ к ядру для настройки любых тестов. Код, запускающий ядро в приложении, представляет собой набор статических частных методов и для меня немного загадочен, и я не вижу, как это сделать в контексте теста. Любая помощь?