assertSame('myapp:wechat.platform:' . $logical, $full); } /** * 测试缓存键段会去除多余冒号。 */ public function testComposeTrimsColonNoiseOnSegments(): void { $logical = TokenCacheKey::wechatServiceComponentAccessToken('wx_service'); $this->assertSame('ns:wechat.service:' . $logical, CacheKey::compose('::ns::', ':::wechat.service::', $logical)); } /** * 测试微信 Token 逻辑键使用 platform、wxapp、service 统一命名。 */ public function testWechatTokenLogicalKeysFollowChannelNames(): void { $this->assertSame( 'wechat:app:wx_platform:platform:access_token', TokenCacheKey::wechatPlatformAccessToken('wx_platform'), ); $this->assertSame( 'wechat:app:wx_wxapp:wxapp:access_token', TokenCacheKey::wechatWxappAccessToken('wx_wxapp'), ); $this->assertSame( 'wechat:app:wx_service:service:component_access_token', TokenCacheKey::wechatServiceComponentAccessToken('wx_service'), ); $this->assertSame( 'wechat:app:wx_service:service:authorizer:wx_authorizer:access_token', TokenCacheKey::wechatServiceAuthorizerAccessToken('wx_service', 'wx_authorizer'), ); } /** * 测试缓存键前缀为空时抛出异常。 */ public function testComposeThrowsWhenPrefixEmpty(): void { $this->expectException(WechatException::class); $this->expectExceptionMessage('通用前缀'); CacheKey::compose('', 'wechat.wxapp', 'wechat:app:x:wxapp:access_token'); } /** * 测试缓存键通道段为空时抛出异常。 */ public function testComposeThrowsWhenChannelEmpty(): void { $this->expectException(WechatException::class); $this->expectExceptionMessage('通道段'); CacheKey::compose('app', '', 'wechat:app:x:wxapp:access_token'); } /** * 测试缓存键逻辑段为空时抛出异常。 */ public function testComposeThrowsWhenLogicalEmpty(): void { $this->expectException(WechatException::class); $this->expectExceptionMessage('逻辑段'); CacheKey::compose('app', 'wechat.platform', ' '); } }