TtrTest.php 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  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. class TtrTest extends TestCase
  14. {
  15. protected $fromUserId = 100;
  16. protected $toUserId = 101;
  17. public function setUp(): void
  18. {
  19. parent::setUp();
  20. AccountService::check4user($this->fromUserId);
  21. AccountService::check4user($this->toUserId);
  22. // 确保测试账户有足够余额
  23. $fund = new FundService($this->fromUserId, 1);
  24. if($fund->balance() < 10000){
  25. $fund->admin_operate(1, FUND_TYPE::FUND1, 10000, 'TEST');
  26. }
  27. }
  28. /**
  29. * 测试转账DTO
  30. */
  31. public function test_dto()
  32. {
  33. // 创建转账DTO
  34. $dto = new TransferDto();
  35. $dto->fundId = 1;
  36. $dto->remark = 'TEST';
  37. $dto->fromUserId = $this->fromUserId;
  38. $dto->toUserId = $this->toUserId;
  39. $dto->amount = 10;
  40. // 执行转账
  41. $res = DtoService::transfer_call($dto);
  42. // 验证结果
  43. $this->assertTrue($res);
  44. // 验证余额变化
  45. $fromFund = new FundService($this->fromUserId, 1);
  46. $toFund = new FundService($this->toUserId, 1);
  47. // 记录测试数据(允许留存)
  48. echo "转账测试完成:\n";
  49. echo "From用户余额: " . $fromFund->balance() . "\n";
  50. echo "To用户余额: " . $toFund->balance() . "\n";
  51. }
  52. }