public function setUp() { parent::setUp(); // 构建数据库模拟层 $conn = M::mock(ConnectionInterface::class); // 模拟连接 angejia 数据库 $conn->shouldReceive('getDatabaseName')->andReturn('angejia'); $conn->shouldReceive('getQueryGrammar')->andReturn(new Grammar()); $conn->shouldReceive('getPostProcessor')->andReturn(new Processor()); $this->conn = $conn; // 让所有 Model 使用我们伪造的数据库连接 $resolver = M::mock(ConnectionResolverInterface::class); $resolver->shouldReceive('connection')->andReturnUsing(function () { return $this->conn; }); User::setConnectionResolver($resolver); // 模拟 Meta 服务 $meta = M::mock(Meta::class); $meta->shouldReceive('prefix')->with('angejia', 'user')->andReturn(''); $meta->shouldReceive('prefix')->with('angejia', 'user', true)->andReturn(''); $this->meta = $meta; // 模拟 Cache 服务 $cache = M::mock(Cache::class); $this->cache = $cache; // 注入依赖的服务 $this->app->bind(Meta::class, function () { return $this->meta; }); $this->app->bind(Cache::class, function () { return $this->cache; }); }