MockBuilderTest.php 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128
  1. <?php
  2. /*
  3. * This file is part of the phpunit-mock-objects package.
  4. *
  5. * (c) Sebastian Bergmann <sebastian@phpunit.de>
  6. *
  7. * For the full copyright and license information, please view the LICENSE
  8. * file that was distributed with this source code.
  9. */
  10. use PHPUnit\Framework\TestCase;
  11. class Framework_MockBuilderTest extends TestCase
  12. {
  13. public function testMockBuilderRequiresClassName()
  14. {
  15. $mock = $this->getMockBuilder(Mockable::class)->getMock();
  16. $this->assertTrue($mock instanceof Mockable);
  17. }
  18. public function testByDefaultMocksAllMethods()
  19. {
  20. $mock = $this->getMockBuilder(Mockable::class)->getMock();
  21. $this->assertNull($mock->mockableMethod());
  22. $this->assertNull($mock->anotherMockableMethod());
  23. }
  24. public function testMethodsToMockCanBeSpecified()
  25. {
  26. $mock = $this->getMockBuilder(Mockable::class)
  27. ->setMethods(['mockableMethod'])
  28. ->getMock();
  29. $this->assertNull($mock->mockableMethod());
  30. $this->assertTrue($mock->anotherMockableMethod());
  31. }
  32. public function testMethodExceptionsToMockCanBeSpecified()
  33. {
  34. $mock = $this->getMockBuilder(Mockable::class)
  35. ->setMethodsExcept(['mockableMethod'])
  36. ->getMock();
  37. $this->assertTrue($mock->mockableMethod());
  38. $this->assertNull($mock->anotherMockableMethod());
  39. }
  40. public function testEmptyMethodExceptionsToMockCanBeSpecified()
  41. {
  42. $mock = $this->getMockBuilder(Mockable::class)
  43. ->setMethodsExcept()
  44. ->getMock();
  45. $this->assertNull($mock->mockableMethod());
  46. $this->assertNull($mock->anotherMockableMethod());
  47. }
  48. public function testByDefaultDoesNotPassArgumentsToTheConstructor()
  49. {
  50. $mock = $this->getMockBuilder(Mockable::class)->getMock();
  51. $this->assertEquals([null, null], $mock->constructorArgs);
  52. }
  53. public function testMockClassNameCanBeSpecified()
  54. {
  55. $mock = $this->getMockBuilder(Mockable::class)
  56. ->setMockClassName('ACustomClassName')
  57. ->getMock();
  58. $this->assertTrue($mock instanceof ACustomClassName);
  59. }
  60. public function testConstructorArgumentsCanBeSpecified()
  61. {
  62. $mock = $this->getMockBuilder(Mockable::class)
  63. ->setConstructorArgs([23, 42])
  64. ->getMock();
  65. $this->assertEquals([23, 42], $mock->constructorArgs);
  66. }
  67. public function testOriginalConstructorCanBeDisabled()
  68. {
  69. $mock = $this->getMockBuilder(Mockable::class)
  70. ->disableOriginalConstructor()
  71. ->getMock();
  72. $this->assertNull($mock->constructorArgs);
  73. }
  74. public function testByDefaultOriginalCloneIsPreserved()
  75. {
  76. $mock = $this->getMockBuilder(Mockable::class)
  77. ->getMock();
  78. $cloned = clone $mock;
  79. $this->assertTrue($cloned->cloned);
  80. }
  81. public function testOriginalCloneCanBeDisabled()
  82. {
  83. $mock = $this->getMockBuilder(Mockable::class)
  84. ->disableOriginalClone()
  85. ->getMock();
  86. $mock->cloned = false;
  87. $cloned = clone $mock;
  88. $this->assertFalse($cloned->cloned);
  89. }
  90. public function testProvidesAFluentInterface()
  91. {
  92. $spec = $this->getMockBuilder(Mockable::class)
  93. ->setMethods(['mockableMethod'])
  94. ->setConstructorArgs([])
  95. ->setMockClassName('DummyClassName')
  96. ->disableOriginalConstructor()
  97. ->disableOriginalClone()
  98. ->disableAutoload();
  99. $this->assertTrue($spec instanceof PHPUnit_Framework_MockObject_MockBuilder);
  100. }
  101. }