Это, вероятно, не ответит на все Ваши вопросы, если таковые имеются, но я принял решение в одном проекте сделать поблочное тестирование против DB. Я чувствовал в своем случае, что структура DB нуждалась в тестировании также, т.е. сделала мой дизайн DB, поставляют то, что необходимо для приложения. Позже в проекте, когда я чувствую, структура DB стабильна, я, вероятно, перееду от этого.
Для генерации данных я решил создать внешнее приложение, которое заполнило DB "случайными" данными, я создал имя человека и генераторы названия компании и т.д.
причина того, чтобы сделать, это во внешней программе было: 1. Я мог повторно выполниться, тесты на тестом изменили данные, т.е. проверку, что мои тесты смогли работать несколько раз, и модификация данных, сделанная тестами, были допустимые модификации. 2. Я мог в случае необходимости, чистить DB и получать начало с нуля.
я соглашаюсь, что существуют точки отказа в этом подходе, но в моем случае с тех пор, например, поколение человека была часть генерирующихся данных бизнес-логики для тестов, на самом деле тестировал ту часть также.
#
вместо /
, чтобы вам не приходилось их избегать. s
составляет .
и \ s
также включают символы новой строки. {
и }
имеют различные функции, например от n до m раз в {n, m}
. Базовый
preg_match ('# \\ {FINDME \\} (. +) \\ {/ FINDME \\} # s', $ out, $ соответствует);
Расширенные возможности для различных тегов и т. Д. (Стили не так хороши для javascript).
$ delimiter = '#';
$ startTag = '{НАЙТИ}';
$ endTag = '{/ FINDME}';
$ regex = $ разделитель. preg_quote ($ startTag, $ delimiter)
. '(. *?)'
. preg_quote ($ endTag, $ delimiter)
. разделитель $
. 's';
preg_match ($ regex, $ out, $ соответствует);
Поместите этот код в функцию
Вы также можете использовать для этого substr и strpos.
$startsAt = strpos($out, "{FINDME}") + strlen("{FINDME}");
$endsAt = strpos($out, "{/FINDME}", $startsAt);
$result = substr($out, $startsAt, $endsAt - $startsAt);
Вам нужно будет добавить проверку ошибок, чтобы обработать случай, когда не выполняется FINDME.
Разрывы строк могут вызвать проблемы в RegEx, попробуйте удалить или заменить их на \ n перед обработкой.