BuyHandlerTest.php 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183
  1. <?php
  2. namespace Tests\Unit\AppGame;
  3. use App\Module\AppGame\Handler\Shop\BuyHandler;
  4. use Tests\TestCase;
  5. use Uraus\Kku\Request\RequestShopBuy;
  6. use Uraus\Kku\Response\ResponseShopBuy;
  7. /**
  8. * 商品购买Handler测试
  9. */
  10. class BuyHandlerTest extends TestCase
  11. {
  12. /**
  13. * 测试RequestShopBuy请求对象
  14. */
  15. public function testRequestShopBuyStructure()
  16. {
  17. $request = new RequestShopBuy();
  18. // 测试设置商品ID
  19. $request->setGoodId(1001);
  20. $this->assertEquals(1001, $request->getGoodId());
  21. // 测试设置购买数量
  22. $request->setNumber(5);
  23. $this->assertEquals(5, $request->getNumber());
  24. }
  25. /**
  26. * 测试RequestShopBuy默认值
  27. */
  28. public function testRequestShopBuyDefaultValues()
  29. {
  30. $request = new RequestShopBuy();
  31. // 测试默认值
  32. $this->assertEquals(0, $request->getGoodId());
  33. $this->assertEquals(0, $request->getNumber());
  34. }
  35. /**
  36. * 测试ResponseShopBuy响应对象
  37. */
  38. public function testResponseShopBuyStructure()
  39. {
  40. $response = new ResponseShopBuy();
  41. // 验证响应对象可以正常创建
  42. $this->assertInstanceOf(ResponseShopBuy::class, $response);
  43. }
  44. /**
  45. * 测试BuyHandler类结构
  46. */
  47. public function testBuyHandlerStructure()
  48. {
  49. // 由于BuyHandler需要Response参数,我们只测试类是否存在
  50. $this->assertTrue(class_exists(BuyHandler::class));
  51. // 验证BuyHandler是BaseHandler的子类
  52. $reflection = new \ReflectionClass(BuyHandler::class);
  53. $this->assertTrue($reflection->isSubclassOf(\App\Module\AppGame\Handler\BaseHandler::class));
  54. }
  55. /**
  56. * 测试购买请求参数验证
  57. */
  58. public function testBuyRequestValidation()
  59. {
  60. $request = new RequestShopBuy();
  61. // 测试有效的购买参数
  62. $validGoodIds = [1, 100, 1000, 9999];
  63. $validNumbers = [1, 5, 10, 99];
  64. foreach ($validGoodIds as $goodId) {
  65. $request->setGoodId($goodId);
  66. $this->assertEquals($goodId, $request->getGoodId());
  67. $this->assertTrue($request->getGoodId() > 0);
  68. }
  69. foreach ($validNumbers as $number) {
  70. $request->setNumber($number);
  71. $this->assertEquals($number, $request->getNumber());
  72. $this->assertTrue($request->getNumber() > 0);
  73. }
  74. }
  75. /**
  76. * 测试无效的购买参数
  77. */
  78. public function testInvalidBuyParameters()
  79. {
  80. $request = new RequestShopBuy();
  81. // 测试无效的商品ID
  82. $invalidGoodIds = [0, -1, -100];
  83. foreach ($invalidGoodIds as $goodId) {
  84. $request->setGoodId($goodId);
  85. $this->assertEquals($goodId, $request->getGoodId());
  86. $this->assertFalse($request->getGoodId() > 0);
  87. }
  88. // 测试无效的购买数量
  89. $invalidNumbers = [0, -1, -10];
  90. foreach ($invalidNumbers as $number) {
  91. $request->setNumber($number);
  92. $this->assertEquals($number, $request->getNumber());
  93. $this->assertFalse($request->getNumber() > 0);
  94. }
  95. }
  96. /**
  97. * 测试购买请求数据完整性
  98. */
  99. public function testBuyRequestDataIntegrity()
  100. {
  101. $request = new RequestShopBuy();
  102. // 设置完整的购买请求数据
  103. $goodId = 1001;
  104. $number = 5;
  105. $request->setGoodId($goodId);
  106. $request->setNumber($number);
  107. // 验证数据完整性
  108. $this->assertEquals($goodId, $request->getGoodId());
  109. $this->assertEquals($number, $request->getNumber());
  110. // 验证这是一个完整的购买请求
  111. $this->assertTrue($request->getGoodId() > 0);
  112. $this->assertTrue($request->getNumber() > 0);
  113. }
  114. /**
  115. * 测试边界值
  116. */
  117. public function testBoundaryValues()
  118. {
  119. $request = new RequestShopBuy();
  120. // 测试最小有效值
  121. $minValidValue = 1;
  122. $request->setGoodId($minValidValue);
  123. $request->setNumber($minValidValue);
  124. $this->assertEquals($minValidValue, $request->getGoodId());
  125. $this->assertEquals($minValidValue, $request->getNumber());
  126. // 测试较大值
  127. $largeValue = 999999;
  128. $request->setGoodId($largeValue);
  129. $request->setNumber($largeValue);
  130. $this->assertEquals($largeValue, $request->getGoodId());
  131. $this->assertEquals($largeValue, $request->getNumber());
  132. }
  133. /**
  134. * 测试多次设置值
  135. */
  136. public function testMultipleValueSetting()
  137. {
  138. $request = new RequestShopBuy();
  139. // 多次设置商品ID
  140. $request->setGoodId(100);
  141. $this->assertEquals(100, $request->getGoodId());
  142. $request->setGoodId(200);
  143. $this->assertEquals(200, $request->getGoodId());
  144. // 多次设置购买数量
  145. $request->setNumber(1);
  146. $this->assertEquals(1, $request->getNumber());
  147. $request->setNumber(10);
  148. $this->assertEquals(10, $request->getNumber());
  149. }
  150. }