Moq Verify Chaining - PullRequest
       3

Moq Verify Chaining

3 голосов
/ 28 февраля 2012

Если у меня есть зависимость IObjectA, которая содержит PropertyA типа IObjectB с открытым методом Foo() в IObjectB.

Для того, чтобы Verify() Foo () был вызван, можно ли что-то из этого сделать, что правильно?

Mock<IObjectA> objectA = new Mock<IObjectA>();
Mock<IObjectB> objectB = new Mock<IObjectB>();

//A
objectA.Verify(x => x.PropertyA.Foo());

//B
objectA.Verify(x => x.PropertyA);
objectB.Verify(x => x.Foo());

«B» кажется более правильным, но не проверяет и противоречит моему отладочному «шагу», однако «A» дает правильные результаты. Может ли objectA быть опрошен на предмет его свойств и тех свойств, которые используются для вызова, даже если это фиктивный тип?

1 Ответ

4 голосов
/ 28 февраля 2012

Почему вы думаете, что B кажется более правильным?

Пример A говорит внутри объекта Проверка, что PropertyA вызвала foo.

objectA и objectB никак не связаны друг с другом в этом примере. Таким образом, пример B кажется вводящим в заблуждение в его нынешней форме, поскольку он пытается указать, что существует какая-то связь.

Теперь, если вы используете setup, чтобы назначить objectB для objectA, тогда оба примера должны работать (потому что вы говорите Moq, как objectA относится к objectB). Выполнение этой настройки создает отношения, которые вы хотите проверить.

Что-то вроде:

objectA.Setup(x => x.PropertyA).Returns(objectB)

Это в основном говорит: ", когда вызывается PropertyA, вернуть мне объект B. "

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...