service = new SkuService(); } public function test_generate_prefix_sku(): void { $result = $this->service->generatePlatformOuterSku( strategy: 'prefix', origin_sku: '0032', prefix: 'C03', ); $this->assertSame('C03_0032', $result); } public function test_generate_prefix_sku_without_prefix(): void { $result = $this->service->generatePlatformOuterSku( strategy: 'prefix', origin_sku: '0032', prefix: '', ); $this->assertSame('0032', $result); } public function test_generate_prefix_random_sku(): void { $result = $this->service->generatePlatformOuterSku( strategy: 'prefix_random', origin_sku: '0032', prefix: 'C03', random_length: 4, ); $this->assertStringStartsWith('C03_', $result); // prefix(3) + _(1) + random(4) = 8 $this->assertSame(8, strlen($result)); } public function test_generate_prefix_random_sku_without_prefix(): void { $result = $this->service->generatePlatformOuterSku( strategy: 'prefix_random', origin_sku: '0032', prefix: '', random_length: 6, ); // 纯随机部分,6 个字符 $this->assertSame(6, strlen($result)); } public function test_generate_manual_sku(): void { $result = $this->service->generatePlatformOuterSku( strategy: 'manual', origin_sku: '0032', manual_value: 'CUSTOM_SKU_001', ); $this->assertSame('CUSTOM_SKU_001', $result); } public function test_generate_manual_sku_with_null_value(): void { $result = $this->service->generatePlatformOuterSku( strategy: 'manual', origin_sku: '0032', manual_value: null, ); $this->assertSame('', $result); } public function test_generate_invalid_strategy_throws_exception(): void { $this->expectException(\InvalidArgumentException::class); $this->expectExceptionMessage('不支持的生成策略: unknown'); $this->service->generatePlatformOuterSku( strategy: 'unknown', origin_sku: '0032', ); } public function test_build_strategy_record_prefix(): void { $result = $this->service->buildStrategyRecord('prefix', 'C03'); $this->assertSame('prefix:C03', $result); } public function test_build_strategy_record_prefix_random(): void { $result = $this->service->buildStrategyRecord('prefix_random', 'C03', 4); $this->assertSame('prefix_random:C03:4', $result); } public function test_build_strategy_record_manual(): void { $result = $this->service->buildStrategyRecord('manual'); $this->assertSame('manual', $result); } }