добавление 1 дня к значению формата ДАТЫ И ВРЕМЕНИ

Прежде всего, вы должны действительно прочитать хороший учебник о Mockito, например, из vogella . Видите ли, вы просто складываете много вещей, которые бессмысленны .

Например:

@Mock
private TextQueue textQueue;

, чтобы в вашем тестовом примере было

textQueue = spy(textQueue);

. Вы должны быть действительно ясно об этом. Шпион строится на реальном экземпляре тестируемого вами класса. Создание шпиона, который шпионит за издевательством, как сказано: это не имеет смысла.

Тогда:

}catch(final Exception e){
    Logger.error("add text to queue threw an error" + e);

Опять бессмысленно. Вся идея ваших модульных тестов заключается в том, что они не справляются , когда что-то не так. Когда ваш производственный код выдает неожиданные исключения, вы не регистрируете их, а просто позволяете им в конце пройти ваш тестовый случай.

Чтобы ответить на реальный вопрос: выглядит , как будто ваш производственный код использует конкретный «постоянный» экземпляр регистратора. Учитывая этот дизайн, единственный способ проверить ваш производственный код состоит в том, чтобы:

  • сделать этот LOGGER поддельным объектом
  • каким-то образом внедрить его в экземпляр underTest вашего производственного кода класс
  • запускает этот метод для тестирования на underTest (и каким-то образом заставляет метод генерировать исключение)
  • проверяет, что поддельный LOGGER видел ожидаемый вызов error()
  • [ 1130]

    Мы не можем дать лучший совет, потому что вашего кода недостаточно, мы действительно не знаем, что делает ваш производственный класс (например: мы не знаем, что такое LOGGER и где он исходит из., если это статическая переменная, то, скорее всего, вы не можете получить «контроль» над ней с помощью Mockito).

    В любом случае, вам, вероятно, действительно нужен концепт шпион . Чтобы протестировать addTextToQueue(), вам нужен способ вызвать «реальную» реализацию addTextToQueue(), но вызов addTser() внутри должен перейти к макету (чтобы вы могли контролировать, что делает этот вызов). [1124 ]

    Но как уже было сказано: начните с действительно исследования того, как работает Mockito, вместо того, чтобы собирать воедино вещи, которые не имеют смысла в каком-то подходе «проб и ошибок». Правильное модульное тестирование с использованием насмешек сложно, вы не можете узнать это методом «проб и ошибок».

74
задан John Conde 26 August 2014 в 14:54
поделиться

5 ответов

Если вы хотите сделать это в 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);
55
ответ дан 24 November 2019 в 11:46
поделиться

Используя время запроса к серверу для Добавления дней. Работа как ожидалось.

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 дня для добавления любого количества дней.

0
ответ дан 24 November 2019 в 11:46
поделиться

Можно использовать в качестве после.

$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)));
1
ответ дан 24 November 2019 в 11:46
поделиться
  1. Используйте strtotime для преобразования строки в отметку времени
  2. Добавьте к ней день (например: добавив 86400 секунд (24 * 60 * 60))

например:

$time = strtotime($myInput);
$newTime = $time + 86400;

Если добавляется только 1 день, тогда повторное использование strtotime, вероятно, излишне.

9
ответ дан 24 November 2019 в 11:46
поделиться

Я предлагаю начать использовать классы Zend_Date из Zend Framework . Я знаю, это немного оффтоп, но мне понравится этот вариант: -)

$date = new Zend_Date();
$date->add('24:00:00', Zend_Date::TIMES);
print $date->get();
1
ответ дан 24 November 2019 в 11:46
поделиться
Другие вопросы по тегам:

Похожие вопросы: