php - 在 Laravel 中针对 MySQL 进行测试

标签 php mysql laravel testing

你好,我正在laravel 5.5中测试一个使用Mysql作为数据库和DatabaseTransactions的API。

假设我有一个模型团队,它可能是事件非事件,并且我想测试获得一个非事件团队。

$team = Team::inactive()->inRandomOrder()->first();
$response = $this->json('GET',route('teams.show',$team->id); 
$reponse ->assertStatus(404);

如果我的团队中没有不活跃的团队,这段代码是有问题的 假种子数据库。 那么这里最好的方法是什么?

1)我应该确保我的数据库有一个不活跃的团队吗?
2) 我是否应该在第一行之后做出断言,如果 $team==null 我让团队 inactive 进行测试。
3)在测试过程中使用工厂并创建假数据?

我暂时避免使用 3 个表的唯一原因是,在与外键的更复杂关系中,我必须植入 3-4 个表。

最佳答案

您应该独立测试每个案例是否真的可能发生。如果出现不存在不活跃团队的情况,请进行测试。如果根本不存在眼泪,也可以为此编写一个测试。

在测试之前运行迁移和播种是很常见的。 Laravel 提供了一些有用的实用程序来做到这一点以及在拆卸过程中回滚。使您的测试保持原子性并尽可能彼此隔离。

关于php - 在 Laravel 中针对 MySQL 进行测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48499539/

相关文章:

php - 使用 SQL 查询获取团队排名

php - 无法执行此功能 "php artisan migrate"

PHP 准备多列更新语句

javascript - 在 Bootstrap 4 表单中通过 AJAX 进行 PHP POST 的问题

php - 你如何从ssh运行一个php文件?

php - 我正在尝试从即将弃用的 mysql 语句到 msqli 准备语句,我做错了什么?

PHP连接MySQL数据库出错

php - 如何管理多个用户在mysql中的工作/打开项目记录?

php - 无法在 ubuntu 中安装 laravel(缺少 ext-zip)

mysql - 在 Laravel 4 中返回随机行