[ 'item_id' => TestEnvironment::get('TEST_PESTICIDE_ITEM_ID', 101), 'name' => TestEnvironment::get('TEST_PESTICIDE_ITEM_NAME', '高效除虫剂'), 'numeric_attributes' => [ 'fram_pesticide_rate' => TestEnvironment::get('TEST_PESTICIDE_SUCCESS_RATE', 80) ] ], 'weedicide' => [ 'item_id' => TestEnvironment::get('TEST_WEEDICIDE_ITEM_ID', 102), 'name' => TestEnvironment::get('TEST_WEEDICIDE_ITEM_NAME', '强力除草剂'), 'numeric_attributes' => [ 'fram_weedicide_rate' => TestEnvironment::get('TEST_WEEDICIDE_SUCCESS_RATE', 75) ] ], 'watering_tool' => [ 'item_id' => TestEnvironment::get('TEST_WATERING_ITEM_ID', 103), 'name' => TestEnvironment::get('TEST_WATERING_ITEM_NAME', '自动洒水器'), 'numeric_attributes' => [ 'fram_drought_rate' => TestEnvironment::get('TEST_WATERING_SUCCESS_RATE', 90) ] ], 'invalid_item' => [ 'item_id' => TestEnvironment::get('TEST_INVALID_ITEM_ID', 999), 'name' => TestEnvironment::get('TEST_INVALID_ITEM_NAME', '无效物品'), 'numeric_attributes' => [] ] ]; return $items[$type] ?? []; } /** * 获取测试土地配置 */ public static function getTestLand(string $type): array { $lands = [ 'pest_land' => [ 'land_id' => TestEnvironment::get('TEST_PEST_LAND_ID', 1), 'user_id' => TestEnvironment::get('TEST_PEST_LAND_USER_ID', 1), 'disaster_type' => TestEnvironment::get('TEST_PEST_LAND_DISASTER_TYPE', 2), 'crop_id' => 1, 'growth_stage' => 2 ], 'weed_land' => [ 'land_id' => TestEnvironment::get('TEST_WEED_LAND_ID', 2), 'user_id' => TestEnvironment::get('TEST_WEED_LAND_USER_ID', 1), 'disaster_type' => TestEnvironment::get('TEST_WEED_LAND_DISASTER_TYPE', 3), 'crop_id' => 2, 'growth_stage' => 3 ], 'drought_land' => [ 'land_id' => TestEnvironment::get('TEST_DROUGHT_LAND_ID', 3), 'user_id' => TestEnvironment::get('TEST_DROUGHT_LAND_USER_ID', 1), 'disaster_type' => TestEnvironment::get('TEST_DROUGHT_LAND_DISASTER_TYPE', 1), 'crop_id' => 3, 'growth_stage' => 1 ], 'normal_land' => [ 'land_id' => TestEnvironment::get('TEST_NORMAL_LAND_ID', 4), 'user_id' => TestEnvironment::get('TEST_NORMAL_LAND_USER_ID', 1), 'disaster_type' => TestEnvironment::get('TEST_NORMAL_LAND_DISASTER_TYPE', 0), 'crop_id' => 4, 'growth_stage' => 2 ], 'other_user_land' => [ 'land_id' => TestEnvironment::get('TEST_OTHER_USER_LAND_ID', 5), 'user_id' => TestEnvironment::get('TEST_OTHER_USER_LAND_USER_ID', 2), 'disaster_type' => TestEnvironment::get('TEST_OTHER_USER_LAND_DISASTER_TYPE', 2), 'crop_id' => 5, 'growth_stage' => 1 ] ]; return $lands[$type] ?? []; } /** * 获取测试场景配置 */ public static function getTestScenario(string $category, string $scenario): array { $scenarios = [ 'success_scenarios' => [ 'pesticide_success' => [ 'description' => '除虫成功测试', 'user_id' => TestEnvironment::get('TEST_USER_ID', 1), 'land_id' => TestEnvironment::get('TEST_PEST_LAND_ID', 1), 'item_id' => TestEnvironment::get('TEST_PESTICIDE_ITEM_ID', 101), 'expected_result' => 'success' ], 'weedicide_success' => [ 'description' => '除草成功测试', 'user_id' => TestEnvironment::get('TEST_USER_ID', 1), 'land_id' => TestEnvironment::get('TEST_WEED_LAND_ID', 2), 'item_id' => TestEnvironment::get('TEST_WEEDICIDE_ITEM_ID', 102), 'expected_result' => 'success' ], 'watering_success' => [ 'description' => '浇水成功测试', 'user_id' => TestEnvironment::get('TEST_USER_ID', 1), 'land_id' => TestEnvironment::get('TEST_DROUGHT_LAND_ID', 3), 'item_id' => TestEnvironment::get('TEST_WATERING_ITEM_ID', 103), 'expected_result' => 'success' ] ], 'failure_scenarios' => [ 'invalid_item' => [ 'description' => '使用无效物品测试', 'user_id' => TestEnvironment::get('TEST_USER_ID', 1), 'land_id' => TestEnvironment::get('TEST_PEST_LAND_ID', 1), 'item_id' => TestEnvironment::get('TEST_INVALID_ITEM_ID', 999), 'expected_error' => '不是除虫物品' ], 'no_permission' => [ 'description' => '无权限访问土地测试', 'user_id' => TestEnvironment::get('TEST_USER_ID', 1), 'land_id' => TestEnvironment::get('TEST_OTHER_USER_LAND_ID', 5), 'item_id' => TestEnvironment::get('TEST_PESTICIDE_ITEM_ID', 101), 'expected_error' => '土地不存在或不属于当前用户' ], 'no_disaster' => [ 'description' => '土地无对应灾害测试', 'user_id' => TestEnvironment::get('TEST_USER_ID', 1), 'land_id' => TestEnvironment::get('TEST_NORMAL_LAND_ID', 4), 'item_id' => TestEnvironment::get('TEST_PESTICIDE_ITEM_ID', 101), 'expected_error' => '灾害清理失败' ] ] ]; return $scenarios[$category][$scenario] ?? []; } }