2009-06-09 3 views
4

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

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

однако GetType не переписываемый.

Любые предложения?

ответ

7

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

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

3

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

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

Type GetType(); 
Смежные вопросы