Я много читал о насмешках, особенно с использованием Rhino Mocks, и узнал, что Rhino Mocks может только имитировать методы интерфейса, которые являются виртуальными или виртуальными методами в конкретных классах. Я прочитал, что причина этого в том, что Rhino mocks не может перехватывать не виртуальные методы, и это то место, где я застрял. Что это означает, перехватывая методы? Как методы перехвата фактически работают в отношении насмешек (в частности, Rhino Mocks)Что такое перехват метода в отношении насмешек?
0
A
ответ
1
Основная идея состоит в том, что он создает класс «за кулисами», который переопределяет любые виртуальные или интерфейсные методы и подключает в них «макет» кода ,
Очень упрощенный пример/Обзор
если вы (на основании вашего комментария вопроса)
public EmailHelper
{
public virtual int SendEmail(MailMessage message)
{
var server = ConnectToServer();
int statusCode = server.SubmitEmail(message);
return statusCode;
}
}
, а затем в тесте (я забыл синтаксис Rhino для этого, но это достаточно близко)
var mock = Mocks.CreateMockFor<EmailHelper>();
Expect.Call(mock.SendEmail).Return(5);
за кулисами она будет использовать отражение, чтобы загрузить объект SomeClass Type
, искать его для реализации интерфейса и виртуальных методов и ген щая скорость класса что-то вроде
public MockEmailHelper
{
public override int SendEmail(MailMessage message)
{
return 5;
}
}
Так как вы можете видеть, когда вы звоните фиктивную версию SendEmail, он не будет подключаться к серверу и т.д., он будет делать то, что вы сказали ей, так что вы можете проверить свой код это зависит от «модуля электронной почты» без фактической отправки электронной почты.
Смежные вопросы
- 1. Что такое соглашение в отношении метода переопределения суперкласса из подкласса?
- 2. Что такое запрос в отношении файлов cookie?
- 3. Что такое набор в отношении баз данных?
- 4. Что такое «sth» в отношении веб-трафика
- 5. в отношении веб-разработки, что такое таксономия?
- 6. Что такое хэш в отношении JSON?
- 7. в отношении рекурсии, что такое начальное значение?
- 8. Что такое исправление обезьян в отношении TypeScript?
- 9. Что такое «соль» в отношении MYSQL sha1?
- 10. Что такое «частичная колонка» в отношении DataGridView?
- 11. Что такое прототип цепи в отношении JSON?
- 12. Что такое «политика debian» в отношении lua?
- 13. Что такое консенсус в отношении «Голосовой семьи»?
- 14. Перехват выполнения LINQ в отношении базы данных
- 15. Что такое перегрузка метода?
- 16. Что такое подпись метода?
- 17. Что такое отправка метода?
- 18. Перехват метода Groovy
- 19. Переопределение или перехват метода
- 20. Перехват метода Ruby
- 21. Перехват метода Windsor (AOP)
- 22. Перехват одного метода дважды
- 23. Перехват вызова метода .NET
- 24. Что такое латентность метода take() метода BlockingQueue?
- 25. Что такое подпись метода Run
- 26. Что такое семантика «объявления метода»?
- 27. Что такое консенсус в отношении использования функции Function.caller в JavaScript?
- 28. Что такое «стандарт» в отношении стилей в JavaScript?
- 29. Что такое магия функция в C/C++ (в отношении OpenMP)
- 30. Что такое логика метода Math.max?
Так насмешливые фреймворки фактически вызывают реализации ваших методов. Выполняет ли это их на самом деле? Например, что, если я издеваюсь над методом электронной почты, отправит ли он электронные письма? – Xaisoft
Нет, вот и все ... так что вы не зависите от внешних систем. Я добавлю больше, чтобы помочь прояснить, удержать .... –
Хорошо спасибо, я буду ждать вашего разъяснения. – Xaisoft