Модульное тестирование 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

Другие вопросы по тегам