Модульное тестирование Laravel, вызывающее метод, который вызывает эту базу данных - PullRequest
0 голосов
/ 19 октября 2018

Я пытался настроить модульный тест, который вызывает метод, в котором вызывается база данных.Я посмотрел на насмешки и обманщик и не понимаю, что делать.

В моем тесте я вызываю

Logic::lookForClassificationException($exception_array, $content);

В моем методе есть вызов моей модели ClassificationException

$exceptions = ClassificationException::select('exception')->get(); 

Я не совсем понимаю, как настроить макет для этого.ClassificationException - это таблица, которая имеет идентификатор, исключение, previous_word и after_word.

Как мне подделать или подделать настройку?

1 Ответ

0 голосов
/ 19 октября 2018

Один из способов сделать тесты с использованием БД - настроить базу данных 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

...