Moq подделывает один метод, но использует реальную реализацию другогоC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Moq подделывает один метод, но использует реальную реализацию другого

Сообщение Anonymous »

Имеется интерфейс IService, который имеет Method1() и Method2().

Я хочу проверить это, когда Method1() выдает исключение, вызывается Method2() и возвращает заданное значение.

< р>(

Код: Выделить всё

Method2()
вызывается, когда выдается метод Method1()).

Поэтому мне нужно протестировать настоящий метод Method2() с поддельным методом Method1 (), это методы одного и того же интерфейса.

Вот мой тестовый код:

Код: Выделить всё

MBase sut.MethodX()
— единственная точка входа. Он использует IService.

Моя цель — доказать, что Method2() возвращает что-то.

Код: Выделить всё

// Arrange
// Fake bytes in.
var networkStreamMock = new Mock();
networkStreamMock.Method1(x => x.Read(It.IsAny(), It.IsAny(), It.IsAny())).Returns(It.IsAny());

// Force throw TimeoutException.
var mock = new Mock();
mock.Setup(x => x.Method1(new Message
{
Xml = Xml,
}
)).Throws();

// Check Method 2 is called. (this is done in its own test so commented out)
// mock.Setup(m => m.Method2(It.IsAny())).Verifiable();

// New MBase.
IKernel kernel = new StandardKernel(new FakeBindings());
kernel.Rebind().ToConstant(mock.Object);
MBase sut = kernel.Get();

// Act
sut.MethodX(networkStreamMock.Object);

// Here I would like to assert on the return value of Method2
mock.Verify(m => m.Method2(It.IsAny()));
Возможно ли это с помощью Moq или другой платформы для макетирования? Как мне это сделать?
Я могу вручную создать макет с поддельной реализацией Method1() и реальной реализацией Method2(), но мне интересно, есть ли лучший подход.

Я уже тестировал IService отдельно, но теперь хочу проверить его взаимодействие с MBase.

Подробнее здесь: https://stackoverflow.com/questions/190 ... of-another
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Moq.raiseasync приводит к System.NullReferenceException moq.raise работает нормально
    Anonymous » » в форуме C#
    0 Ответы
    6 Просмотры
    Последнее сообщение Anonymous
  • Moq.raiseasync приводит к System.NullReferenceException moq.raise работает нормально
    Anonymous » » в форуме C#
    0 Ответы
    4 Просмотры
    Последнее сообщение Anonymous
  • Moq.raiseasync приводит к System.NullReferenceException moq.raise работает нормально
    Anonymous » » в форуме C#
    0 Ответы
    9 Просмотры
    Последнее сообщение Anonymous
  • Moq.raiseasync приводит к System.NullReferenceException moq.raise работает нормально
    Anonymous » » в форуме C#
    0 Ответы
    7 Просмотры
    Последнее сообщение Anonymous
  • Ожидался вызов макета один раз, но было 0 раз: с Moq
    Anonymous » » в форуме C#
    0 Ответы
    12 Просмотры
    Последнее сообщение Anonymous

Вернуться в «C#»