Laravel单元测试调用一种调用该数据库的方法

时间:2018-10-18 23:12:34

标签: laravel unit-testing mocking faker

我一直在尝试建立一个单元测试,该单元测试调用一种调用数据库的方法。我查了嘲笑和伪造者,对做什么感到困惑。

在测试中我打电话给

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

在我的方法中,有一个对我的ClassificationException模型的调用

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

我对如何为此设置模拟感到困惑。分类异常是具有ID,异常,previous_word和after_word的表。

如何模拟或伪造设置?

1 个答案:

答案 0 :(得分:0)

使用DB进行测试的一种方法是为以下测试设置内存中的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方法中调用此函数。

这只是许多可能的方法之一,可能不适合您的需求。另一种方法是为测试和use a separate .env for tests

设置一个单独的数据库

根据我的经验,当您尝试模仿雄辩的模型时,测试会失败