5
* Copyright (c) 2010-2014, Sebastian Bergmann <sebastian@phpunit.de>.
8
* Redistribution and use in source and binary forms, with or without
9
* modification, are permitted provided that the following conditions
12
* * Redistributions of source code must retain the above copyright
13
* notice, this list of conditions and the following disclaimer.
15
* * Redistributions in binary form must reproduce the above copyright
16
* notice, this list of conditions and the following disclaimer in
17
* the documentation and/or other materials provided with the
20
* * Neither the name of Sebastian Bergmann nor the names of his
21
* contributors may be used to endorse or promote products derived
22
* from this software without specific prior written permission.
24
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
25
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
26
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
27
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
28
* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
29
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
30
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
31
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
32
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
33
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
34
* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
35
* POSSIBILITY OF SUCH DAMAGE.
37
* @package PHPUnit_MockObject
38
* @author Giorgio Sironi <piccoloprincipeazzurro@gmail.com>
39
* @author Sebastian Bergmann <sebastian@phpunit.de>
40
* @copyright 2010-2014 Sebastian Bergmann <sebastian@phpunit.de>
41
* @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License
42
* @link http://github.com/sebastianbergmann/phpunit-mock-objects
43
* @since File available since Release 1.0.0
47
* @package PHPUnit_MockObject
48
* @author Giorgio Sironi <piccoloprincipeazzurro@gmail.com>
49
* @author Sebastian Bergmann <sebastian@phpunit.de>
50
* @copyright 2010-2014 Sebastian Bergmann <sebastian@phpunit.de>
51
* @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License
52
* @link http://github.com/sebastianbergmann/phpunit-mock-objects
53
* @since File available since Release 1.0.0
55
class Framework_MockBuilderTest extends PHPUnit_Framework_TestCase
57
public function testMockBuilderRequiresClassName()
59
$spec = $this->getMockBuilder('Mockable');
60
$mock = $spec->getMock();
61
$this->assertTrue($mock instanceof Mockable);
64
public function testByDefaultMocksAllMethods()
66
$spec = $this->getMockBuilder('Mockable');
67
$mock = $spec->getMock();
68
$this->assertNull($mock->mockableMethod());
69
$this->assertNull($mock->anotherMockableMethod());
72
public function testMethodsToMockCanBeSpecified()
74
$spec = $this->getMockBuilder('Mockable');
75
$spec->setMethods(array('mockableMethod'));
76
$mock = $spec->getMock();
77
$this->assertNull($mock->mockableMethod());
78
$this->assertTrue($mock->anotherMockableMethod());
81
public function testByDefaultDoesNotPassArgumentsToTheConstructor()
83
$spec = $this->getMockBuilder('Mockable');
84
$mock = $spec->getMock();
85
$this->assertEquals(array(NULL, NULL), $mock->constructorArgs);
88
public function testMockClassNameCanBeSpecified()
90
$spec = $this->getMockBuilder('Mockable');
91
$spec->setMockClassName('ACustomClassName');
92
$mock = $spec->getMock();
93
$this->assertTrue($mock instanceof ACustomClassName);
96
public function testConstructorArgumentsCanBeSpecified()
98
$spec = $this->getMockBuilder('Mockable');
99
$spec->setConstructorArgs($expected = array(23, 42));
100
$mock = $spec->getMock();
101
$this->assertEquals($expected, $mock->constructorArgs);
104
public function testOriginalConstructorCanBeDisabled()
106
$spec = $this->getMockBuilder('Mockable');
107
$spec->disableOriginalConstructor();
108
$mock = $spec->getMock();
109
$this->assertNull($mock->constructorArgs);
112
public function testByDefaultOriginalCloneIsPreserved()
114
$spec = $this->getMockBuilder('Mockable');
115
$mock = $spec->getMock();
116
$cloned = clone $mock;
117
$this->assertTrue($cloned->cloned);
120
public function testOriginalCloneCanBeDisabled()
122
$spec = $this->getMockBuilder('Mockable');
123
$spec->disableOriginalClone();
124
$mock = $spec->getMock();
125
$mock->cloned = FALSE;
126
$cloned = clone $mock;
127
$this->assertFalse($cloned->cloned);
130
public function testCallingAutoloadCanBeDisabled()
132
// it is not clear to me how to test this nor the difference
133
// between calling it or not
134
$this->markTestIncomplete();
137
public function testProvidesAFluentInterface()
139
$spec = $this->getMockBuilder('Mockable')
140
->setMethods(array('mockableMethod'))
141
->setConstructorArgs(array())
142
->setMockClassName('DummyClassName')
143
->disableOriginalConstructor()
144
->disableOriginalClone()
146
$this->assertTrue($spec instanceof PHPUnit_Framework_MockObject_MockBuilder);