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;
});
}