Laravel不依赖数据库SQL查询测试
1. 运行环境
linux
1). 当前使用的 Laravel 版本?
Laravel 9
2). 当前使用的 php/php-fpm 版本?
PHP 版本:8.1
php-fpm 版本:8.1
4). 业务环境
phpunit test
2. 问题描述?
现在有一个需求是,我想测试查询生成的SQL是否正确,但是又不想依赖数据库。Laravel 现有的方案并没有现成的方案。我这边想了一个折中的方案,测试的时候给一个空地址(不能正常的连接数据库),在查询的时候捕获 QueryException 异常,然后拿到其中的查询语句。感觉这个方法比较笨重,看看大家有没有比较好的方案。
代码示例:
class UserRepository
{
public function getByMobile()
{
return User::where('status', 1)
->where('mobile', 'like', '1111%')
->get();
}
}
现在如果我想测试getByMobile()
方法,没有一个很好的办法来处理。或者说这时候不应该对这个方法进行测试。
还是我来吧……