Skip to content

Commit 5fb1d68

Browse files
authored
Merge pull request #35 from Codeception/revert-34-verify-mock-objects
Revert "Added ability isolate and verify mock objects within a specification"
2 parents e8abceb + 09b6c23 commit 5fb1d68

File tree

4 files changed

+20
-242
lines changed

4 files changed

+20
-242
lines changed

src/Codeception/Specify.php

Lines changed: 20 additions & 80 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,8 @@
33

44
use Codeception\Specify\Config;
55
use Codeception\Specify\ConfigBuilder;
6-
use Codeception\Specify\ObjectProperty;
76

8-
trait Specify
9-
{
7+
trait Specify {
108

119
private $beforeSpecify = array();
1210
private $afterSpecify = array();
@@ -29,7 +27,7 @@ private function specifyInit()
2927
if (!$this->specifyConfig) $this->specifyConfig = Config::create();
3028
}
3129

32-
function specify($specification, \Closure $callable = null, $params = [])
30+
function specify($specification, \Closure $callable = null, $params = [])
3331
{
3432
if (!$callable) return;
3533
$this->specifyInit();
@@ -40,7 +38,7 @@ function specify($specification, \Closure $callable = null, $params = [])
4038

4139
$this->setName($newName);
4240

43-
$properties = $this->getSpecifyObjectProperties();
41+
$properties = get_object_vars($this);
4442

4543
// prepare for execution
4644
$throws = $this->getSpecifyExpectedException($params);
@@ -60,12 +58,13 @@ function specify($specification, \Closure $callable = null, $params = [])
6058
if ($closure instanceof \Closure) $closure->__invoke();
6159
}
6260
}
63-
6461
$this->specifyExecute($test, $throws, $example);
6562

6663
// restore object properties
67-
$this->specifyRestoreProperties($properties);
68-
64+
foreach ($properties as $property => $val) {
65+
if ($this->specifyConfig->propertyIgnored($property)) continue;
66+
$this->$property = $val;
67+
}
6968
if (!empty($this->afterSpecify) && is_array($this->afterSpecify)) {
7069
foreach ($this->afterSpecify as $closure) {
7170
if ($closure instanceof \Closure) $closure->__invoke();
@@ -121,10 +120,8 @@ private function specifyExecute($test, $throws = false, $examples = array())
121120
}
122121

123122
$result = $this->getTestResultObject();
124-
125123
try {
126124
call_user_func_array($test, $examples);
127-
$this->specifyCheckMockObjects();
128125
} catch (\PHPUnit_Framework_AssertionFailedError $e) {
129126
if ($throws !== get_class($e)){
130127
$result->addFailure(clone($this), $e, $result->time());
@@ -182,86 +179,29 @@ function cleanSpecify()
182179
}
183180

184181
/**
185-
* @param ObjectProperty[] $properties
182+
* @param $properties
183+
* @return array
186184
*/
187185
private function specifyCloneProperties($properties)
188186
{
189-
foreach ($properties as $property) {
190-
$propertyName = $property->getName();
191-
$propertyValue = $property->getValue();
192-
193-
if ($this->specifyConfig->classIgnored($propertyValue)) {
187+
foreach ($properties as $property => $val) {
188+
if ($this->specifyConfig->propertyIgnored($property)) {
189+
continue;
190+
}
191+
if ($this->specifyConfig->classIgnored($val)) {
194192
continue;
195193
}
196194

197-
if ($this->specifyConfig->propertyIsShallowCloned($propertyName)) {
198-
if (is_object($propertyValue)) {
199-
$property->setValue(clone $propertyValue);
195+
if ($this->specifyConfig->propertyIsShallowCloned($property)) {
196+
if (is_object($val)) {
197+
$this->$property = clone $val;
200198
} else {
201-
$property->setValue($propertyValue);
199+
$this->$property = $val;
202200
}
203201
}
204-
205-
if ($this->specifyConfig->propertyIsDeeplyCloned($propertyName)) {
206-
$property->setValue($this->copier->copy($propertyValue));
202+
if ($this->specifyConfig->propertyIsDeeplyCloned($property)) {
203+
$this->$property = $this->copier->copy($val);
207204
}
208205
}
209206
}
210-
211-
/**
212-
* @param ObjectProperty[] $properties
213-
*/
214-
private function specifyRestoreProperties($properties)
215-
{
216-
foreach ($properties as $property) {
217-
$property->restoreValue();
218-
}
219-
}
220-
221-
/**
222-
* @return ObjectProperty[]
223-
*/
224-
private function getSpecifyObjectProperties()
225-
{
226-
$properties = [];
227-
228-
foreach (get_object_vars($this) as $property => $value) {
229-
if ($this->specifyConfig->propertyIgnored($property)) {
230-
continue;
231-
}
232-
233-
$properties[] = new ObjectProperty($this, $property, $value);
234-
}
235-
236-
// isolate mockObjects property from PHPUnit_Framework_TestCase
237-
if (($phpUnitReflection = $this->specifyGetPhpUnitReflection()) !== null) {
238-
$properties[] = $mockObjects = new ObjectProperty(
239-
$this, $phpUnitReflection->getProperty('mockObjects')
240-
);
241-
242-
// remove all mock objects inherited from parent scope(s)
243-
$mockObjects->setValue([]);
244-
}
245-
246-
return $properties;
247-
}
248-
249-
private function specifyCheckMockObjects()
250-
{
251-
if (($phpUnitReflection = $this->specifyGetPhpUnitReflection()) !== null) {
252-
$verifyMockObjects = $phpUnitReflection->getMethod('verifyMockObjects');
253-
$verifyMockObjects->setAccessible(true);
254-
$verifyMockObjects->invoke($this);
255-
}
256-
}
257-
258-
/**
259-
* @return \ReflectionClass|null
260-
*/
261-
private function specifyGetPhpUnitReflection()
262-
{
263-
if ($this instanceof \PHPUnit_Framework_TestCase) {
264-
return new \ReflectionClass('\PHPUnit_Framework_TestCase');
265-
}
266-
}
267207
}

src/Codeception/Specify/ObjectProperty.php

Lines changed: 0 additions & 78 deletions
This file was deleted.

tests/ObjectPropertyTest.php

Lines changed: 0 additions & 66 deletions
This file was deleted.

tests/SpecifyTest.php

Lines changed: 0 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -279,24 +279,6 @@ public function testExamplesIndexInName()
279279
});
280280
}
281281

282-
public function testMockObjectsIsolation()
283-
{
284-
$mock = $this->getMock(get_class($this), ['testMockObjectsIsolation']);
285-
$mock->expects($this->once())->method('testMockObjectsIsolation');
286-
287-
$this->specify('this should fail', function () {
288-
$mock = $this->getMock(get_class($this), ['testMockObjectsIsolation']);
289-
$mock->expects($this->exactly(100500))->method('testMockObjectsIsolation');
290-
}, ['throws' => 'PHPUnit_Framework_ExpectationFailedException']);
291-
292-
$this->specify('this should not fail', function () {
293-
$mock = $this->getMock(get_class($this), ['testMockObjectsIsolation']);
294-
$mock->expects($this->never())->method('testMockObjectsIsolation');
295-
});
296-
297-
$mock->testMockObjectsIsolation();
298-
}
299-
300282
// public function testFail()
301283
// {
302284
// $this->specify('this will fail', function(){

0 commit comments

Comments
 (0)