2026-02-26 12:02:00 +08:00
|
|
|
<?php
|
|
|
|
|
|
|
|
|
|
namespace Tests;
|
|
|
|
|
|
|
|
|
|
use Illuminate\Foundation\Testing\TestCase as BaseTestCase;
|
2026-04-30 09:58:18 +08:00
|
|
|
use Illuminate\Support\Facades\Redis;
|
2026-02-26 12:02:00 +08:00
|
|
|
|
2026-04-30 09:58:18 +08:00
|
|
|
/**
|
|
|
|
|
* 测试基类
|
|
|
|
|
* 提供项目 Feature Test 共用的辅助方法。
|
|
|
|
|
*/
|
2026-02-26 12:02:00 +08:00
|
|
|
abstract class TestCase extends BaseTestCase
|
|
|
|
|
{
|
2026-04-30 09:58:18 +08:00
|
|
|
/**
|
|
|
|
|
* 清理聊天室测试产生的 Redis 房间状态,避免误删浏览器登录会话。
|
|
|
|
|
*/
|
|
|
|
|
protected function flushChatRoomRedisState(): void
|
|
|
|
|
{
|
2026-04-30 10:02:59 +08:00
|
|
|
$prefix = config('database.redis.options.prefix', '');
|
|
|
|
|
$cursor = '0';
|
2026-04-30 09:58:18 +08:00
|
|
|
|
2026-04-30 10:02:59 +08:00
|
|
|
do {
|
|
|
|
|
[$cursor, $keys] = Redis::scan($cursor, ['match' => $prefix.'room:*', 'count' => 200]);
|
|
|
|
|
|
|
|
|
|
foreach ($keys ?? [] as $fullKey) {
|
|
|
|
|
// Laravel Redis Facade 写入时会自动追加前缀,删除时要还原成业务短 key。
|
|
|
|
|
$shortKey = $prefix ? substr((string) $fullKey, strlen($prefix)) : (string) $fullKey;
|
|
|
|
|
Redis::del($shortKey);
|
|
|
|
|
}
|
|
|
|
|
} while ($cursor !== '0');
|
2026-04-30 09:58:18 +08:00
|
|
|
}
|
2026-02-26 12:02:00 +08:00
|
|
|
}
|