Модульное тестирование Laravel, вызывающее метод, который вызывает эту базу данных
Я пытался настроить модульный тест, который вызывает метод, где вызывается база данных. Я посмотрел на насмешливого и обманутого человека и не понимаю, что делать.
В моем тесте я звоню
Logic::lookForClassificationException($exception_array, $content);
В моем методе есть вызов моей модели ClassificationException
$exceptions = ClassificationException::select('exception')->get();
Я не понимаю, как настроить макет для этого. ClassificationException - это таблица, которая имеет идентификатор, исключение, previous_word и after_word.
Как мне подделать или подделать настройку?
1 ответ
Один из способов сделать тесты с использованием БД - это настроить базу данных sqlite в памяти для таких тестов:
use Illuminate\Database\Capsule\Manager as DB;
protected function setUpDatabase()
{
$database = new DB;
$database->addConnection(['driver' => 'sqlite', 'database' => ':memory:']);
$database->bootEloquent();
$database->setAsGlobal();
}
Затем вызовите эту функцию в вашем setUp
метод тестового класса.
Это только один из многих возможных способов, который может не соответствовать вашим потребностям. Другой способ - настроить отдельную базу данных для тестов и использовать отдельный.env для тестов.
По моему опыту, тесты ломаются, когда вы пытаетесь издеваться над моделями Eloquent