Мы используем Moq для выполнения некоторых модульных тестов, и есть некоторое странное поведение, возможно, это какая-то проблема конфигурации, которую я пропускаю.в основном, у меня есть 2 теста (которые вызывают рабочий процесс Windows, который вызывает пользовательские действия, которые вызывают метод, использующий Invoke. Я не знаю, помогает ли это, но я хочу дать как можно больше информации).Тесты выполняются нормально, когда выполняются в одиночку, но если я выполняю их в одном и том же запуске, первый проходит, а второй не проходит (не имеет значения, если я изменяю их порядок, 2-й всегда не проходит)
Макет воссоздается каждый раз, загружается с использованием Unity.Например:
MockProcessConfigurator = MockFactory.Create<IProcessConfigurator>();
MockProcessConfigurator.Setup(x => x.MyMethod(It.IsAny<Order>()));
[...]
InversionOfControl.Instance.Register<IProcessConfigurator>(MockProcessConfigurator .Object)
Вызванный вызов (пользовательское действие WF):
var invoker = new WorkflowInvoker(new MyWorkflow());
invoker.Invoke(inputParameter);
. При отладке вызов (Вызов) составляет
MyModuleService.ProcessConfigurator.MyMethod(inputOrder);
.что ProcessConfigurator всегда поддразнивается.
Неудачный вызов в тесте выглядит примерно так:
MockEnvironment.MockProcessConfigurator.Verify(x => x.MyMethod(It.IsAny<Order>()), Times.Exactly(1));
При отладке метод фактически вызывается каждый раз, поэтому я подозреваю, чточто-то беспокоит насчет инстанса.Я немного растерялся, потому что кажется, что все реализовано правильно, но по какой-то причине, когда они запускаются один за другим, возникает проблема