You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel测试报错:testing.users表不存在,网站正常求解决

问题原因及解决方法

核心原因

测试环境使用的数据库(testing)和网站运行的数据库并非同一实例,且测试数据库未生成对应的users表;同时测试代码直接依赖了非测试环境的数据库记录,导致找不到数据。

具体解决步骤

  • 检查测试环境数据库配置
    Laravel测试默认加载.env.testing配置文件(若存在),或读取phpunit.xml中的环境变量。确认两点:

    1. 测试环境配置的DB_DATABASE为testing,且该数据库已在MySQL中创建;
    2. 数据库用户名、密码配置正确,拥有访问该数据库的权限。
  • 为测试数据库执行迁移
    测试数据库初始为空,需运行迁移生成表结构:

    php artisan migrate --env=testing
    

    更推荐在测试类中引入RefreshDatabase trait,让Laravel自动在测试前后处理迁移:

    use Illuminate\Foundation\Testing\RefreshDatabase;
    
    class AwesomeTest extends TestCase
    {
        use RefreshDatabase;
    
        public function test_my_awesome_test()
        {
            // 测试代码
        }
    }
    
  • 改用工厂创建测试数据
    不要用User::find(1)依赖现有数据库记录,测试数据库无该数据。改用工厂生成测试用户:

    public function test_my_awesome_test()
    {
        $user = User::factory()->create(); // 在测试数据库创建新用户
        $response = $this->actingAs($user)->get('/awesome/test');
    
        $response->assertStatus(200);
    }
    
  • 验证phpunit.xml配置
    打开项目根目录的phpunit.xml,确认数据库环境变量配置正确:

    <php>
        <env name="APP_ENV" value="testing"/>
        <env name="DB_DATABASE" value="testing"/>
        <!-- 其他必要配置 -->
    </php>
    

内容的提问来源于stack exchange,提问作者wtsuport

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 12:03:14