assertTrue(class_exists(PetOwnershipValidator::class)); } /** * 测试偷菜验证器存在 */ public function test_pet_steal_validator_exists() { $this->assertTrue(class_exists(PetStealValidator::class)); } /** * 测试PetVegetealValidation的验证规则 */ public function test_pet_vegeteal_validation_rules() { $validation = new PetVegetealValidation(); $rules = $validation->rules(); // 验证规则数量 $this->assertCount(4, $rules); // required, integer, pet_ownership, steal_validator // 检查是否包含PetOwnershipValidator $petOwnershipRule = null; foreach ($rules as $rule) { if (isset($rule[1]) && $rule[1] instanceof PetOwnershipValidator) { $petOwnershipRule = $rule; break; } } $this->assertNotNull($petOwnershipRule, '应该包含宠物归属权验证规则'); $this->assertEquals('pet_id', $petOwnershipRule[0]); // 检查是否包含PetStealValidator $stealValidatorRule = null; foreach ($rules as $rule) { if (isset($rule[1]) && $rule[1] instanceof PetStealValidator) { $stealValidatorRule = $rule; break; } } $this->assertNotNull($stealValidatorRule, '应该包含偷菜验证规则'); $this->assertEquals('plant_id', $stealValidatorRule[0]); } /** * 测试字段翻译 */ public function test_field_translations() { $validation = new PetVegetealValidation(); $translations = $validation->translates(); $this->assertEquals('被偷玩家ID', $translations['user_id']); $this->assertEquals('宠物ID', $translations['pet_id']); $this->assertEquals('作物ID', $translations['plant_id']); $this->assertEquals('当前用户ID', $translations['current_user_id']); } /** * 测试protobuf字段映射 */ public function test_protobuf_field_mapping() { $request = new RequestPetVegeteal(); $request->setUserId(39171); $request->setPetId(36); $request->setPlantId(562); // 测试序列化 $jsonString = $request->serializeToJsonString(); $data = json_decode($jsonString, true); // 验证字段映射正确 $this->assertEquals('39171', $data['userId']); $this->assertEquals('36', $data['petId']); $this->assertEquals('562', $data['plantId']); } }