Насмешка над оператором в Moq - PullRequest
4 голосов
/ 09 июня 2009

Есть ли способ заставить мои издевательства выдавать себя за тип? Я пытаюсь сделать что-то вроде этого:

var myMock = new Mock<IMyType>();
myMock.Setup(x => x.GetType()).Returns(typeof(MyTypeImpl));

однако, GetType не может быть переопределено.

Есть предложения?

Ответы [ 2 ]

7 голосов
/ 09 июня 2009

Вместо использования оператора is для проверки типов, вы можете (не должны) реализовать свой собственный переопределяемый метод интерфейса, который выполняет аналогичную функцию, и реализовать его с помощью оператора is (или typeof()/GetType()) на вашей обычной группе классов.

Тем не менее, если вы используете оператор is таким образом, чтобы его можно было тестировать подобным образом, более вероятно, что вы в основном побеждаете цель полиморфизма и интерфейсов где-то вдоль линии. Я бы подумал, смогу ли я просто избавиться от этого.

3 голосов
/ 04 марта 2011

Я знаю, что это старый пост, но я искал решение этой проблемы ...

Используя Moq, вы можете добавить стандартную сигнатуру GetType к вашему интерфейсу, позволяя Moq смоделировать метод без необходимости писать больше кода, поскольку метод уже реализован для вас.

Type GetType();
...