MockTraitTest.php 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. <?php
  2. namespace AlibabaCloud\Client\Tests\LowerthanVersion7_2\Unit\Traits;
  3. use OutOfBoundsException;
  4. use PHPUnit\Framework\TestCase;
  5. use AlibabaCloud\Client\AlibabaCloud;
  6. use AlibabaCloud\Client\Exception\ClientException;
  7. use AlibabaCloud\Client\Exception\ServerException;
  8. /**
  9. * Class MockTraitTest
  10. *
  11. * @package AlibabaCloud\Client\Tests\LowerthanVersion7_2\Unit\Traits
  12. */
  13. class MockTraitTest extends TestCase
  14. {
  15. /**
  16. * @expectedExceptionMessage Mock queue is empty
  17. * @expectedException OutOfBoundsException
  18. * @throws ServerException
  19. * @throws ClientException
  20. */
  21. public function testMock()
  22. {
  23. AlibabaCloud::cancelMock();
  24. $header = ['X-Foo' => 'Bar'];
  25. $body = [
  26. 'Code' => 'code',
  27. 'Message' => 'message',
  28. ];
  29. AlibabaCloud::mockResponse(200, $header, $body);
  30. AlibabaCloud::mockResponse(500, $header, $body);
  31. $result = AlibabaCloud::rpc()
  32. ->product('ecs')
  33. ->regionId('cn-hangzhou')
  34. ->request();
  35. self::assertEquals($body, $result->toArray());
  36. try {
  37. AlibabaCloud::rpc()
  38. ->product('ecs')
  39. ->regionId('cn-hangzhou')
  40. ->request();
  41. } catch (ServerException $exception) {
  42. self::assertEquals('message', $exception->getErrorMessage());
  43. self::assertEquals($body, $exception->getResult()->toArray());
  44. }
  45. AlibabaCloud::rpc()
  46. ->product('ecs')
  47. ->regionId('cn-hangzhou')
  48. ->request();
  49. }
  50. public function testCancelMock()
  51. {
  52. AlibabaCloud::mockResponse();
  53. AlibabaCloud::mockResponse(500);
  54. self::assertTrue(AlibabaCloud::hasMock());
  55. AlibabaCloud::cancelMock();
  56. self::assertFalse(AlibabaCloud::hasMock());
  57. }
  58. }