带有测试输出的 Lumen 5.1 播种

Posted

技术标签:

【中文标题】带有测试输出的 Lumen 5.1 播种【英文标题】:Lumen 5.1 seeding with output from tests 【发布时间】:2016-06-17 23:44:51 【问题描述】:

为了能够通过数据库测试运行集成测试,我编写了一个播种器,它为新创建的假用户在 Messages 表中播种假消息。然后需要此用户的 ID 来检索消息,因此在播种器类中我只需打印它的 ID。

然后在测试中我调用以下内容:

$output = new BufferedOutput;
$exitCode = \Artisan::call('db:seed', ['--class' => UserMessagesSeeder'], $output);

这应该让我用以下内容检索输出:

$output->fetch()

但是上面的总是返回null。

我做错了什么吗?或者也许有更好的方法来调用播种机?我是否应该简单地将整个工厂包括在我的测试课程中并在必要时调用它?公平地说,这似乎很麻烦。

【问题讨论】:

等待您从另一个播种机内部进行 Artisan 调用? 不,这是来自 phpunit 测试的内部,在扩展 TestCase 的类中 【参考方案1】:

显然有一个简单的解决方法,而不是运行 artisan seeding 命令,可以在测试中使用 Seeder 类,如下所示:

$seeder = new UserMessagesSeeder;
$user_id = $seeder->run();

上述与 DatabaseTransactions 特征相结合可以成为运行集成测试的非常有用的工具,并且您可以看到播种器内部的任何值都可以通过 run 方法返回。

【讨论】:

以上是关于带有测试输出的 Lumen 5.1 播种的主要内容,如果未能解决你的问题,请参考以下文章

流明不可预测的输出

播种或迁移表时如何向控制台提供输出?

lumen安装后输出hello world

lumen 开启调试模式,关闭debug输出,只保留数据验证提示

Bcrypt 在 Lumen 5.4 中不起作用:调用未定义的函数 bcrypt()

如何在 Laravel Lumen 8 中设置响应的 cookie