TradeTest.php 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. <?php
  2. namespace App\Module\Fund\Tests\Unit;
  3. use App\Module\Fund\Dto\TransferDto;
  4. use App\Module\Fund\Enums\FUND_TYPE;
  5. use App\Module\Fund\Services\AccountService;
  6. use App\Module\Fund\Services\DtoService;
  7. use App\Module\Fund\Services\FundService;
  8. use App\Module\Fund\Models\FundModel;
  9. use Tests\TestCase;
  10. /**
  11. * 贸易测试
  12. *
  13. */
  14. class TradeTest extends TestCase
  15. {
  16. protected $fromUserId = 100;
  17. protected $toUserId = 101;
  18. public function setUp(): void
  19. {
  20. parent::setUp();
  21. AccountService::check4user($this->fromUserId);
  22. AccountService::check4user($this->toUserId);
  23. // 确保测试账户有足够余额
  24. $fund = new FundService($this->fromUserId, 1);
  25. if($fund->balance() < 10000){
  26. $fund->admin_operate(1, FUND_TYPE::FUND1, 10000, 'TEST');
  27. }
  28. }
  29. /**
  30. * 测试转账DTO
  31. */
  32. public function test_dto()
  33. {
  34. // 创建转账DTO
  35. $dto = new TransferDto();
  36. $dto->fundId = 1;
  37. $dto->remark = 'TEST';
  38. $dto->fromUserId = $this->fromUserId;
  39. $dto->toUserId = $this->toUserId;
  40. $dto->amount = 10;
  41. // 执行转账
  42. $res = DtoService::transfer_call($dto);
  43. // 验证结果
  44. $this->assertTrue($res);
  45. // 验证余额变化
  46. $fromFund = new FundService($this->fromUserId, 1);
  47. $toFund = new FundService($this->toUserId, 1);
  48. // 记录测试数据(允许留存)
  49. echo "转账测试完成:\n";
  50. echo "From用户余额: " . $fromFund->balance() . "\n";
  51. echo "To用户余额: " . $toFund->balance() . "\n";
  52. }
  53. }