Как обрабатывать макеты (Rhino Mock) и контейнер единиц в разных классах модульных тестов? - PullRequest
0 голосов
/ 19 февраля 2020

Я работаю над большим настольным приложением. Приложение связывается с рядом внешних служб, и приложение использует контейнер Unity для разрешения объектов. Я сталкиваюсь с проблемой при написании юнит-теста с использованием носорога. Я издеваюсь над теми службами, которые общаются с внешними службами. У меня есть класс "HatAgent.cs", который общается с внешним сервисом. Я высмеиваю этот класс в моем модульном тесте. Время жизни "HatAgent.cs" одноэлементное.

Если у меня есть разные классы модульных тестов и в одном классе, если я издеваюсь над "HatAgent.cs" и переопределяю его, как показано ниже:

var agent = MockRepository.GenerateMock<IHatAgent>();
//Stub methods.....
IocContainerFactory.Instance.OverrideRegistrations(c => c.RegisterInstance(typeof(IHatAgent), agent ));

Он отлично работает, когда я запускаю модульное тестирование этого Classe. Но если я высмеиваю это в разных классах модульных тестов и при запуске всех модульных тестов вместе, мой тест не пройден. Причина в моих методах, когда IHatAgent разрешается, он получает фиктивный объект того класса модульного теста, конструктор которого запускается последним.

Как с этим справиться?

Кроме того, как выполняется порядок модульного теста?

...