TestConfig.php 8.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209
  1. <?php
  2. namespace App\Module\AppGame\Tests;
  3. /**
  4. * 测试配置类
  5. *
  6. * 集中管理所有测试用的环境变量和配置,方便编排测试
  7. * 现在从环境变量文件加载配置,独立于代码
  8. */
  9. class TestConfig
  10. {
  11. /**
  12. * 获取测试用户配置
  13. */
  14. public static function getTestUser(): array
  15. {
  16. return TestEnvironment::getTestUser();
  17. }
  18. /**
  19. * 获取测试用户ID
  20. */
  21. public static function getTestUserId(): int
  22. {
  23. return TestEnvironment::get('TEST_USER_ID', 1);
  24. }
  25. /**
  26. * 获取测试用户密码
  27. */
  28. public static function getTestUserPassword(): string
  29. {
  30. return TestEnvironment::get('TEST_USER_PASSWORD', 'test123456');
  31. }
  32. /**
  33. * 获取除虫测试配置
  34. */
  35. public static function getPesticideTestConfig(): array
  36. {
  37. $config = TestEnvironment::getPesticideConfig();
  38. $config['disaster_type'] = 2; // 虫害类型
  39. $config['expected_success_rate'] = $config['success_rate'];
  40. return $config;
  41. }
  42. /**
  43. * 获取除草测试配置
  44. */
  45. public static function getWeedicideTestConfig(): array
  46. {
  47. $config = TestEnvironment::getWeedicideConfig();
  48. $config['disaster_type'] = 3; // 杂草类型
  49. $config['expected_success_rate'] = $config['success_rate'];
  50. return $config;
  51. }
  52. /**
  53. * 获取浇水测试配置
  54. */
  55. public static function getWateringTestConfig(): array
  56. {
  57. $config = TestEnvironment::getWateringConfig();
  58. $config['disaster_type'] = 1; // 干旱类型
  59. $config['expected_success_rate'] = $config['success_rate'];
  60. return $config;
  61. }
  62. /**
  63. * 获取测试物品配置
  64. */
  65. public static function getTestItem(string $type): array
  66. {
  67. $items = [
  68. 'pesticide' => [
  69. 'item_id' => TestEnvironment::get('TEST_PESTICIDE_ITEM_ID', 101),
  70. 'name' => TestEnvironment::get('TEST_PESTICIDE_ITEM_NAME', '高效除虫剂'),
  71. 'numeric_attributes' => [
  72. 'fram_pesticide_rate' => TestEnvironment::get('TEST_PESTICIDE_SUCCESS_RATE', 80)
  73. ]
  74. ],
  75. 'weedicide' => [
  76. 'item_id' => TestEnvironment::get('TEST_WEEDICIDE_ITEM_ID', 102),
  77. 'name' => TestEnvironment::get('TEST_WEEDICIDE_ITEM_NAME', '强力除草剂'),
  78. 'numeric_attributes' => [
  79. 'fram_weedicide_rate' => TestEnvironment::get('TEST_WEEDICIDE_SUCCESS_RATE', 75)
  80. ]
  81. ],
  82. 'watering_tool' => [
  83. 'item_id' => TestEnvironment::get('TEST_WATERING_ITEM_ID', 103),
  84. 'name' => TestEnvironment::get('TEST_WATERING_ITEM_NAME', '自动洒水器'),
  85. 'numeric_attributes' => [
  86. 'fram_drought_rate' => TestEnvironment::get('TEST_WATERING_SUCCESS_RATE', 90)
  87. ]
  88. ],
  89. 'invalid_item' => [
  90. 'item_id' => TestEnvironment::get('TEST_INVALID_ITEM_ID', 999),
  91. 'name' => TestEnvironment::get('TEST_INVALID_ITEM_NAME', '无效物品'),
  92. 'numeric_attributes' => []
  93. ]
  94. ];
  95. return $items[$type] ?? [];
  96. }
  97. /**
  98. * 获取测试土地配置
  99. */
  100. public static function getTestLand(string $type): array
  101. {
  102. $lands = [
  103. 'pest_land' => [
  104. 'land_id' => TestEnvironment::get('TEST_PEST_LAND_ID', 1),
  105. 'user_id' => TestEnvironment::get('TEST_PEST_LAND_USER_ID', 1),
  106. 'disaster_type' => TestEnvironment::get('TEST_PEST_LAND_DISASTER_TYPE', 2),
  107. 'crop_id' => 1,
  108. 'growth_stage' => 2
  109. ],
  110. 'weed_land' => [
  111. 'land_id' => TestEnvironment::get('TEST_WEED_LAND_ID', 2),
  112. 'user_id' => TestEnvironment::get('TEST_WEED_LAND_USER_ID', 1),
  113. 'disaster_type' => TestEnvironment::get('TEST_WEED_LAND_DISASTER_TYPE', 3),
  114. 'crop_id' => 2,
  115. 'growth_stage' => 3
  116. ],
  117. 'drought_land' => [
  118. 'land_id' => TestEnvironment::get('TEST_DROUGHT_LAND_ID', 3),
  119. 'user_id' => TestEnvironment::get('TEST_DROUGHT_LAND_USER_ID', 1),
  120. 'disaster_type' => TestEnvironment::get('TEST_DROUGHT_LAND_DISASTER_TYPE', 1),
  121. 'crop_id' => 3,
  122. 'growth_stage' => 1
  123. ],
  124. 'normal_land' => [
  125. 'land_id' => TestEnvironment::get('TEST_NORMAL_LAND_ID', 4),
  126. 'user_id' => TestEnvironment::get('TEST_NORMAL_LAND_USER_ID', 1),
  127. 'disaster_type' => TestEnvironment::get('TEST_NORMAL_LAND_DISASTER_TYPE', 0),
  128. 'crop_id' => 4,
  129. 'growth_stage' => 2
  130. ],
  131. 'other_user_land' => [
  132. 'land_id' => TestEnvironment::get('TEST_OTHER_USER_LAND_ID', 5),
  133. 'user_id' => TestEnvironment::get('TEST_OTHER_USER_LAND_USER_ID', 2),
  134. 'disaster_type' => TestEnvironment::get('TEST_OTHER_USER_LAND_DISASTER_TYPE', 2),
  135. 'crop_id' => 5,
  136. 'growth_stage' => 1
  137. ]
  138. ];
  139. return $lands[$type] ?? [];
  140. }
  141. /**
  142. * 获取测试场景配置
  143. */
  144. public static function getTestScenario(string $category, string $scenario): array
  145. {
  146. $scenarios = [
  147. 'success_scenarios' => [
  148. 'pesticide_success' => [
  149. 'description' => '除虫成功测试',
  150. 'user_id' => TestEnvironment::get('TEST_USER_ID', 1),
  151. 'land_id' => TestEnvironment::get('TEST_PEST_LAND_ID', 1),
  152. 'item_id' => TestEnvironment::get('TEST_PESTICIDE_ITEM_ID', 101),
  153. 'expected_result' => 'success'
  154. ],
  155. 'weedicide_success' => [
  156. 'description' => '除草成功测试',
  157. 'user_id' => TestEnvironment::get('TEST_USER_ID', 1),
  158. 'land_id' => TestEnvironment::get('TEST_WEED_LAND_ID', 2),
  159. 'item_id' => TestEnvironment::get('TEST_WEEDICIDE_ITEM_ID', 102),
  160. 'expected_result' => 'success'
  161. ],
  162. 'watering_success' => [
  163. 'description' => '浇水成功测试',
  164. 'user_id' => TestEnvironment::get('TEST_USER_ID', 1),
  165. 'land_id' => TestEnvironment::get('TEST_DROUGHT_LAND_ID', 3),
  166. 'item_id' => TestEnvironment::get('TEST_WATERING_ITEM_ID', 103),
  167. 'expected_result' => 'success'
  168. ]
  169. ],
  170. 'failure_scenarios' => [
  171. 'invalid_item' => [
  172. 'description' => '使用无效物品测试',
  173. 'user_id' => TestEnvironment::get('TEST_USER_ID', 1),
  174. 'land_id' => TestEnvironment::get('TEST_PEST_LAND_ID', 1),
  175. 'item_id' => TestEnvironment::get('TEST_INVALID_ITEM_ID', 999),
  176. 'expected_error' => '不是除虫物品'
  177. ],
  178. 'no_permission' => [
  179. 'description' => '无权限访问土地测试',
  180. 'user_id' => TestEnvironment::get('TEST_USER_ID', 1),
  181. 'land_id' => TestEnvironment::get('TEST_OTHER_USER_LAND_ID', 5),
  182. 'item_id' => TestEnvironment::get('TEST_PESTICIDE_ITEM_ID', 101),
  183. 'expected_error' => '土地不存在或不属于当前用户'
  184. ],
  185. 'no_disaster' => [
  186. 'description' => '土地无对应灾害测试',
  187. 'user_id' => TestEnvironment::get('TEST_USER_ID', 1),
  188. 'land_id' => TestEnvironment::get('TEST_NORMAL_LAND_ID', 4),
  189. 'item_id' => TestEnvironment::get('TEST_PESTICIDE_ITEM_ID', 101),
  190. 'expected_error' => '灾害清理失败'
  191. ]
  192. ]
  193. ];
  194. return $scenarios[$category][$scenario] ?? [];
  195. }
  196. }