2015-04-05 5 views
1

Мой вопрос в том, как создаются объекты mocks не как создать макет объекта с помощью библиотеки.Как создаются макеты

Я изучил исходный код библиотеки Mockito, но я не понял, как это делается. Я искал в Интернете, но в статьях объясняется, что такое макетный объект и как его создавать с помощью библиотек.

Для динамического языка программирования, возможно, это просто, как мы можем изменить методы, переменные, но как его сделать в статическом языке программирования (Java, например)

+0

Это зависит. Что-нибудь из [cglib] (https://github.com/cglib/cglib) для динамического создания классов в ['Proxy'] (https://docs.oracle.com/javase/7/docs/api/java/ языки/отражения/Proxy.html). Этот вопрос слишком широк. –

+0

Я действительно не уверен, что вы подразумеваете под Java как динамический язык. – thefourtheye

+0

Да, можете ли вы определить, какая разница между статическим и динамическим языком? –

ответ

1

Начнем с того, что макет является: объект, который вы можете установить ожидаемой продолжительности на нем относительно методов, которые ожидают вызова, и/или параметров этих методов и/или количества вызовов этих методов.

Mocks отправляется на тестируемые объекты, чтобы имитировать определенные зависимости, без использования реального кода (во многих случаях это проблематично/опасно, например, иметь дело с платежными шлюзами).

Поскольку mocks нужно перехватывать вызовы ко всем (или некоторым, в случае частичных mocks) методам, есть несколько способов их реализации, в зависимости от возможностей, предоставляемых языком. В частности, в Java это может быть реализовано через прокси-классы: https://stackoverflow.com/a/1082869/1974224, подход, который заставляет вас (но в хорошем смысле) использовать интерфейсы в вашем коде, полагаясь на зависимости.