Как издеваться над методом, у которого нет интерфейса? - PullRequest
3 голосов
/ 09 февраля 2012

В действиях моего контроллера я делаю:

string a = Url.Action(...);

Я использую nunit и Moq (и Mvc 2)

Как я могу заглушить вызов Url.Действие для возврата строки?

Ответы [ 2 ]

2 голосов
/ 09 февраля 2012

Вы не можете смоделировать конкретные классы, у которых нет конструктора по умолчанию с Moq (я предполагаю, что Url является экземпляром UrlHelper). У вас есть два варианта здесь:

(1) Отъезд Родинки в качестве альтернативной / дополнительной основы для насмешек

(2) Написать класс-оболочку для методов UrlHelper, который реализует интерфейс, и затем вы можете смоделировать оболочку для клиентов.

0 голосов
/ 09 февраля 2012

Вы не можете.UrlHeler.Action не является виртуальным, поэтому вы не можете заглушить его с помощью Moq.

Однако вы можете создать виртуальный метод в вашем контроллере.И заменить / переопределить его реализацию в тестах.

...