Прежде всего, вы должны действительно прочитать хороший учебник о Mockito, например, из vogella . Видите ли, вы просто складываете много вещей, которые бессмысленны .
Например:
@Mock
private TextQueue textQueue;
, чтобы в вашем тестовом примере было
textQueue = spy(textQueue);
. Вы должны быть действительно ясно об этом. Шпион строится на реальном экземпляре тестируемого вами класса. Создание шпиона, который шпионит за издевательством, как сказано: это не имеет смысла.
Тогда:
}catch(final Exception e){
Logger.error("add text to queue threw an error" + e);
Опять бессмысленно. Вся идея ваших модульных тестов заключается в том, что они не справляются , когда что-то не так. Когда ваш производственный код выдает неожиданные исключения, вы не регистрируете их, а просто позволяете им в конце пройти ваш тестовый случай.
Чтобы ответить на реальный вопрос: выглядит , как будто ваш производственный код использует конкретный «постоянный» экземпляр регистратора. Учитывая этот дизайн, единственный способ проверить ваш производственный код состоит в том, чтобы:
underTest
вашего производственного кода класс underTest
(и каким-то образом заставляет метод генерировать исключение) error()
Мы не можем дать лучший совет, потому что вашего кода недостаточно, мы действительно не знаем, что делает ваш производственный класс (например: мы не знаем, что такое LOGGER и где он исходит из., если это статическая переменная, то, скорее всего, вы не можете получить «контроль» над ней с помощью Mockito).
В любом случае, вам, вероятно, действительно нужен концепт шпион . Чтобы протестировать addTextToQueue()
, вам нужен способ вызвать «реальную» реализацию addTextToQueue()
, но вызов addTser()
внутри должен перейти к макету (чтобы вы могли контролировать, что делает этот вызов). [1124 ]
Но как уже было сказано: начните с действительно исследования того, как работает Mockito, вместо того, чтобы собирать воедино вещи, которые не имеют смысла в каком-то подходе «проб и ошибок». Правильное модульное тестирование с использованием насмешек сложно, вы не можете узнать это методом «проб и ошибок».
Если вы хотите сделать это в PHP:
// replace time() with the time stamp you want to add one day to
$startDate = time();
date('Y-m-d H:i:s', strtotime('+1 day', $startDate));
Если вы хотите добавить дату в MySQL:
-- replace CURRENT_DATE with the date you want to add one day to
SELECT DATE_ADD(CURRENT_DATE, INTERVAL 1 DAY);
Используя время запроса к серверу для Добавления дней. Работа как ожидалось.
25.08.19 => 27/09/19
$timestamp = Используя время запроса к серверу для Добавления дней. Работа как ожидалось.
25.08.19 => 27/09/19
[110] Здесь '+2 дня для добавления любого количества дней.
SERVER['REQUEST_TIME'];
$dateNow = date('d/m/y', $timestamp);
$newDate = date('d/m/y', strtotime('+2 day', $timestamp));
Здесь '+2 дня для добавления любого количества дней.
Можно использовать в качестве после.
$start_date = date('Y-m-d H:i:s');
$end_date = date("Y-m-d 23:59:59", strtotime('+3 days', strtotime($start_date)));
можно также установить дни как постоянные и использовать как ниже.
if (!defined('ADD_DAYS')) define('ADD_DAYS','+3 days');
$end_date = date("Y-m-d 23:59:59", strtotime(ADD_DAYS, strtotime($start_date)));
strtotime
для преобразования строки в отметку времени например:
$time = strtotime($myInput);
$newTime = $time + 86400;
Если добавляется только 1 день, тогда повторное использование strtotime, вероятно, излишне.
Я предлагаю начать использовать классы Zend_Date из Zend Framework . Я знаю, это немного оффтоп, но мне понравится этот вариант: -)
$date = new Zend_Date();
$date->add('24:00:00', Zend_Date::TIMES);
print $date->get();