Используя StructureMap, как вы явно запускаете повторное создание объекта с InstanceScope.Singleton? - PullRequest
0 голосов
/ 07 июня 2010

У меня есть комплект интеграционных тестов, в котором я хочу разорвать, а затем повторно создать экземпляры некоторых объектов с одной областью действия, которые я зарегистрировал в StructureMap, после и перед каждым тестом.

Таким образом, я могу имитировать фактическую среду выполнения, но не передавать состояние синглтона из одного теста в другой. Может быть, это не лучший способ сделать интеграционное тестирование, но у меня заканчиваются альтернативные решения (читай открыт для любых советов).

Так может ли объект с InstanceScope.Singleton быть восстановлен?

Каков наилучший способ создания экземпляра объекта с одной областью в StructureMap?

Ответы [ 2 ]

3 голосов
/ 18 июня 2010

Я не большой пользователь StructureMap, но в контейнерах IoC вообще не стоит пытаться это делать. Представьте себе синглтон x , который зависит от другого синглтона y . Теперь создайте экземпляр y . Но x все равно будет содержать ссылку на старый экземпляр y !

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

1 голос
/ 18 июня 2010

ObjectFactory.Initialize переинициализирует конфигурацию контейнера. Сделайте это в своей тестовой настройке.

...