Я только что понял, как это сделать! Я собираюсь опубликовать здесь то, что я сделал, поэтому, может быть, это будет полезно для некоторых людей:
Это просто, если вызвать его с помощью переменной.
Код кнопки:
var button = Ext.create('Ext.Button', {
text : 'Button',
renderTo : Ext.getBody(),
listeners: {
click: function() {
// this == the button, as we are in the local scope
this.setText('I was clicked!');
},
mouseover: function() {
// set a new config which says we moused over, if not already set
if (!this.mousedOver) {
this.mousedOver = true;
alert('You moused over a button!\n\nI wont do this again.');
}
}
}
});
В своем окне просмотра вам просто нужно добавить его как элемент:
...
items: [
{
items: button //button is the variable that we defined when we created the button
}
]
...
Окончательный результат:
Я надеюсь, что это поможет кому-то, у кого тот же вопрос, что и у меня:)
Дразнящие библиотеки обычно не работают с деревьями выражений. Они создают тип, который реализует соответствующий интерфейс и отвечает на вызовы метода или путем записи их или проверки их и возврата предварительно запрограммированных ответов. Это обычно делается с любым прокси (например, RealProxy в.NET, Прокси в Java) или с динамической генерацией кода.
В случае EasyMock это использует Proxy
(для интерфейсов, так или иначе), как Вы видите в исходном коде: посмотрите на org.easymock.internal.JavaProxyFactory
.
Библиотеки насмешки Java обычно работают как это:
При создании насмешки фактический прокси создается (быть этим от интерфейса или подкласса), экземпляр находится в "режиме записи". Это означает, что любой последующий вызов зарегистрирован (имя метода, параметры, возвратитесь ожидаемый). Заметьте, что прокси в режиме записи действительно на самом деле только записывает вызовы. Нет никакого отражения, серовато-синего включено. Никакое исследование метаданных, и т.д. Конечно, эти библиотеки делают некоторые приемы (такие как хранение вызовов в локальной переменной потока для обработки методов, которые возвращаются пусто), но идея остается тем же.
Затем когда "режим воспроизведения" запускается, ложный экземпляр просто проверяет ожидания из списка вызовов (method+parameters и возвращаемые значения).
Я никогда не работал с mockito или easymock, но я не думаю, что вызов делает то, что Вы думаете, что он делает. Это не интерпретирует mockedList.get(0)
любым специальным способом. Метод get
выполняется на mockedList
возражайте обычно, и результат этого вручен к when
.
mockedList.get(0)
синтаксис для вызова метода и делает точно это. То, что делает тот метод, не точно ясно. mockedList
тип выполнения будет подклассом LinkedList
возвращенный mock
метод, который может быть реализован, как когда-либо платформа насмешки считает целесообразным.