Я был бы очень признателен, если бы кто-нибудь помог мне разобраться с этой проблемой, с которой я недавно боролся.Я пытаюсь смоделировать метод, который принимает double и Calendar, и возвращает целое число, которое определяется значением Calendar.Определение макета приведено ниже:
new NonStrictExpectations()
{
// this is my class to be mocked
Calculator growthCalc;
{
GregorianCalendar month = new GregorianCalendar(2010, 0, 1);
for (int i = 0; i < 3; i++)
{
// mock the "applyInflation" method
growthCalc.applyInflation(anyDouble, month);
result = i;
month = (GregorianCalendar) month.clone(); //AAA
month.add(Calendar.MONTH, 1);
}
growthCalc.toString();
result = "Mocked Calculator";
}
};
Макет настроен (вызов toString () возвращает правильный текст), но метод applyInflation возвращает ноль для всего, кроме последней итерации цикла выше (то есть он возвращает 2, когда вы передаете в месяц новый GregorianCalendar (2010,2,1).
Я пришел к выводу, что строка, помеченная AAA, не дает эффекта, который, я думаю, должен.кажется, что указатель изменяется, чтобы указывать на новую копию «месяца», которую я могу изменить, не влияя на содержание «месяца», установленного ложным ожиданием. Либо это, либо JMockit не записывает ложный образ, как яподумал.
Пожалуйста, помогите! Пожалуйста, скажите мне, где я ошибаюсь. Я действительно хотел бы знать, что здесь происходит, так как либо мое понимание Java в корне неверно, либо реализация JMockit не ведет себя так, как она«должен» (по мне :)).Или я допустил настоящую ошибку школьника, что два вечера не были замечены ...
Спасибо.