Возможно ли привести интерфейсный макет в объект? - PullRequest
2 голосов
/ 27 февраля 2011

На самом деле у меня есть фиктивный объект на основе интерфейса.Я хотел бы привести его к реальному объекту ..

    var BM = new Mock<DAL.INTERFACES.IMYCLASS>();

Можно ли использовать макет для получения объекта MYCLASS?

Спасибо за ответы

Ответы [ 3 ]

4 голосов
/ 27 февраля 2011

Нет, это не так, как работают большинство насмешливых библиотек.

Они создают целый новый объект, реализуя требуемый интерфейс.

Таким образом, базовый объект не являетсявообще объект MYCLASS, это вообще что-то другое.

Если вам нужно смоделировать конкретный класс, используйте библиотеку-насмешку, которая может имитировать классы, и измените свой код так (*):1008 *

2 голосов
/ 27 февраля 2011

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

Если вам нужен экземпляр объекта, который реализует ваш интерфейс, вы можете просто вызвать Object на вашем члене:

var BM = new Mock<DAL.INTERFACES.IMYCLASS>();
BM.Object;

Не забудьте настроить необходимые методы, на которые опирается ваш тестовый класс.Дополнительную информацию можно найти в руководстве QuickStart на домашней странице moq .

1 голос
/ 02 марта 2011

К вашему сведению, насмешливые библиотеки наследуют тип цели за кулисами.

Таким образом, когда вы запрашиваете Mock<IInterface>(), вы получаете реализацию этого интерфейса, создающую в момент времени:Реализация IInterface нигде не видно, когда Moq создает прокси для вас.

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