Я пытаюсь установить ожидания по методам издевающегося объекта в Moq. В то же время, используя Ninject, я стараюсь, чтобы ядро возвращало мою настроенную макет, всякий раз, когда вызывающему пользователю нужен соответствующий интерфейс. Для большей ясности, вот некоторые псевдокодЗависимость инъекции и макет рамки для .net
Class Car {
Void buildChassis() {
Engine = ObjectBuilder.get<Iengine>()
Engine.performCheckup()
}
}
При тестировании buildChassis, я хочу, чтобы подключить издевались Engine.
Mock<Iengine>().setup().etc.etc.etc
Однако, Moq не играет с Ниндеком, я не могу этого добиться. Мне интересно, есть ли какие-нибудь надежные пакеты программного обеспечения, вокруг которых интегрируются DI и насмехаются. Я не могу заставить пакет ninject.moq работать и не кажется зрелым.
Ну, а в некоторых случаях вы действительно нужен эквивалент создания нового экземпляра класса, только чтобы добавить его в список, например. Как бы вы протестировали в этих случаях? (У меня есть эта потребность ...) –
@Andrei: Внесите IEngineFactory с помощью метода, который создает экземпляры IEngine (в одном случае, вы также можете ввести делегата). Moq может издеваться над фабрикой, после чего вы устанавливаете возвращаемое значение метода create, чтобы вернуть еще один макет. – TrueWill
См. Также http://www.tavaresstudios.com/Blog/post/Unity-20-Automatic-Factories.aspx - не уверен, что Ninject имеет эту функцию. – TrueWill