Я хочу проверить это, когда Method1() выдает исключение, вызывается Method2() и возвращает заданное значение.
< р>(
Код: Выделить всё
Method2()
Поэтому мне нужно протестировать настоящий метод Method2() с поддельным методом Method1 (), это методы одного и того же интерфейса.
Вот мой тестовый код:
Код: Выделить всё
MBase sut.MethodX()
Моя цель — доказать, что 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()));
Я могу вручную создать макет с поддельной реализацией Method1() и реальной реализацией Method2(), но мне интересно, есть ли лучший подход.
Я уже тестировал IService отдельно, но теперь хочу проверить его взаимодействие с MBase.
Подробнее здесь: https://stackoverflow.com/questions/190 ... of-another