Я дразню метод с easymock, который имеет дату в ее теле, чем-то вроде этого:
public void testedMethod() {
...
if (doSomething(new Date())) {
...
}
И мой тест похож на это:
public void testThatMethod() {
...
expect(testedClass.testedMethod(new Date())).andReturn(false);
...
}
Но когда я иногда запускаю тест, я получаю ошибку как это:
Неожиданный вызов метода testedMethod (четверг Jan 28 9:45:13 GMT-03:00 2010): testedMethod (четверг Jan 28 9:45:13 GMT-03:00 2010): ожидаемый: 1, фактический: 0
Я думаю, что это - потому что иногда дата имеет немного различие. Я попробовал некоторые гибкие ожидания без успеха. Существует ли способ обойти это?
Остановитесь использование новой даты (), вместо этого используйте календарь с постоянным временем.
//Declare the Calendar in your test method
Calendar cal = Calendar.getInstance();
cal.setTimeInMillis(0l);
//receive the calendar to be used in testedClass constructor
public void testedMethod() {
...
if (doSomething(cal.getTime())) {
...
}
//use the same calendar to make the assertion
public void testThatMethod() {
...
expect(testedClass.(testedMethod(cal.getTime())).andReturn(false);
...
}
Если вы можете точно понять, почему он не удается, вы можете написать собственный сопоставитель, чтобы быть более гибким при сопоставлении даты. Смотрите раздел на сопоставителях http://easymock.org/easymock2_2_documentation.html
Что делать, если кнопка не будет немедленно отключена, а будет отложена через setTimeout? Ваша функция «disable» вернется, и отправка продолжится.
-121--1016500-Было бы неплохо сделать это, указав что-то вроде приведенного ниже примера кода.
<StackPanel Margin=",10,,">
К сожалению, эта возможность не существует по умолчанию в WPF, и это обидно, потому что она требует от разработчиков жесткого кода известных значений по умолчанию путь, что впоследствии усложняет оформление или тематику приложения.
Лучшее решение, которое я могу придумать на данном этапе - это использование конвертера, но количество дополнительного кода, которое вы должны произвести, чтобы представить это, не является идеальным.
-121--1139804- Возможно, миллисекундная часть дат отличается. Вероятно, необходимо обнулить значение с помощью Calendar.set ()
перед созданием объекта даты:
Calendar myCalendar = Calendar.getInstance();
myCalendar.set(Calendar.MILLISECOND, 0);
Date testDate = myCalendar.getTime();
Но это предположение:)