Кажется, программа установки не регистрируется, и создается исключение MockException - PullRequest
2 голосов
/ 21 сентября 2011

У меня есть эти макеты:

_processWrapperMock = new Mock<IProcessWrapper>(MockBehavior.Strict);
_processStartInfoMock = new Mock<IProcessStartInfo>();

и установка для метода Start():

_processWrapperMock.Setup(m => m.Start(_processStartInfoMock.Object))
                   .Returns(new Process());

и мой экземпляр _processWrapperMock передается в конструктор для объектакоторый содержит метод, который я тестирую.

var wrapper = new WrapperClassImTesting(_processWrapperMock.Object);

Затем я выполняю метод, который я тестирую:

byte[] output = wrapper.MethodImTesting(someParams);

Внутри MethodImTesting, метод Start_processWrapperMock выполнено, но моя предыдущая настройка, кажется, не принимается во внимание.Я получаю сообщение об ошибке:

using (var process = _processWrapper.Start(processStartInfo))

throwing:

Исключение Mock не было обработано кодом пользователя

IProcessWrapper.Start (GraphVizWrapper.ProcessStartInfo)сбой вызова с фиктивным поведением Strict.Все вызовы на макете должны иметь соответствующую настройку.

Что я делаю / не делаю, что мне нужно, чтобы это работало так, как я ожидаю?

Ответы [ 2 ]

2 голосов
/ 21 сентября 2011

Зачем вообще создавать насмешки ... разве ты не можешь просто сделать это?

_processWrapperMock.Setup(m => m.Start(It.IsAny<IProcessStartInfo>)).Returns(new Process());

Вы уверены, что нет другого метода или свойства, к которому обращаются?

0 голосов
/ 21 сентября 2011

Разве это не означает, что на вашем макете был вызван метод, который вы явно не учли с помощью метода SetUp?

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

...