Skip to content

Commit be54f16

Browse files
committed
do not mock the container builder in tests
1 parent 078bbcb commit be54f16

File tree

2 files changed

+56
-58
lines changed

2 files changed

+56
-58
lines changed

Tests/Compiler/ExtensionCompilerPassTest.php

Lines changed: 40 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,10 @@
1212
namespace Symfony\Component\DependencyInjection\Tests\Compiler;
1313

1414
use PHPUnit\Framework\TestCase;
15+
use Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface;
1516
use Symfony\Component\DependencyInjection\Compiler\ExtensionCompilerPass;
17+
use Symfony\Component\DependencyInjection\ContainerBuilder;
18+
use Symfony\Component\DependencyInjection\Extension\Extension;
1619

1720
/**
1821
* @author Wouter J <wouter@wouterj.nl>
@@ -24,33 +27,52 @@ class ExtensionCompilerPassTest extends TestCase
2427

2528
protected function setUp()
2629
{
27-
$this->container = $this->getMockBuilder('Symfony\Component\DependencyInjection\ContainerBuilder')->getMock();
30+
$this->container = new ContainerBuilder();
2831
$this->pass = new ExtensionCompilerPass();
2932
}
3033

3134
public function testProcess()
3235
{
33-
$extension1 = $this->createExtensionMock(true);
34-
$extension1->expects($this->once())->method('process');
35-
$extension2 = $this->createExtensionMock(false);
36-
$extension3 = $this->createExtensionMock(false);
37-
$extension4 = $this->createExtensionMock(true);
38-
$extension4->expects($this->once())->method('process');
39-
40-
$this->container->expects($this->any())
41-
->method('getExtensions')
42-
->will($this->returnValue(array($extension1, $extension2, $extension3, $extension4)))
43-
;
36+
$extension1 = new CompilerPassExtension('extension1');
37+
$extension2 = new DummyExtension('extension2');
38+
$extension3 = new DummyExtension('extension3');
39+
$extension4 = new CompilerPassExtension('extension4');
40+
41+
$this->container->registerExtension($extension1);
42+
$this->container->registerExtension($extension2);
43+
$this->container->registerExtension($extension3);
44+
$this->container->registerExtension($extension4);
4445

4546
$this->pass->process($this->container);
47+
48+
$this->assertCount(2, $this->container->getDefinitions());
4649
}
50+
}
51+
52+
class DummyExtension extends Extension
53+
{
54+
private $alias;
4755

48-
private function createExtensionMock($hasInlineCompile)
56+
public function __construct($alias)
4957
{
50-
return $this->getMockBuilder('Symfony\Component\DependencyInjection\\'.(
51-
$hasInlineCompile
52-
? 'Compiler\CompilerPassInterface'
53-
: 'Extension\ExtensionInterface'
54-
))->getMock();
58+
$this->alias = $alias;
5559
}
60+
61+
public function getAlias()
62+
{
63+
return $this->alias;
64+
}
65+
66+
public function load(array $configs, ContainerBuilder $container)
67+
{
68+
}
69+
70+
public function process(ContainerBuilder $container)
71+
{
72+
$container->register($this->alias);
73+
}
74+
}
75+
76+
class CompilerPassExtension extends DummyExtension implements CompilerPassInterface
77+
{
5678
}

Tests/Extension/ExtensionTest.php

Lines changed: 16 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,8 @@
1212
namespace Symfony\Component\DependencyInjection\Tests\Extension;
1313

1414
use PHPUnit\Framework\TestCase;
15+
use Symfony\Component\DependencyInjection\ContainerBuilder;
16+
use Symfony\Component\DependencyInjection\Extension\Extension;
1517

1618
class ExtensionTest extends TestCase
1719
{
@@ -20,36 +22,8 @@ class ExtensionTest extends TestCase
2022
*/
2123
public function testIsConfigEnabledReturnsTheResolvedValue($enabled)
2224
{
23-
$pb = $this->getMockBuilder('Symfony\Component\DependencyInjection\ParameterBag\ParameterBag')
24-
->setMethods(array('resolveValue'))
25-
->getMock()
26-
;
27-
28-
$container = $this->getMockBuilder('Symfony\Component\DependencyInjection\ContainerBuilder')
29-
->setMethods(array('getParameterBag'))
30-
->getMock()
31-
;
32-
33-
$pb->expects($this->once())
34-
->method('resolveValue')
35-
->with($this->equalTo($enabled))
36-
->will($this->returnValue($enabled))
37-
;
38-
39-
$container->expects($this->once())
40-
->method('getParameterBag')
41-
->will($this->returnValue($pb))
42-
;
43-
44-
$extension = $this->getMockBuilder('Symfony\Component\DependencyInjection\Extension\Extension')
45-
->setMethods(array())
46-
->getMockForAbstractClass()
47-
;
48-
49-
$r = new \ReflectionMethod('Symfony\Component\DependencyInjection\Extension\Extension', 'isConfigEnabled');
50-
$r->setAccessible(true);
51-
52-
$r->invoke($extension, $container, array('enabled' => $enabled));
25+
$extension = new EnableableExtension();
26+
$this->assertSame($enabled, $extension->isConfigEnabled(new ContainerBuilder(), array('enabled' => $enabled)));
5327
}
5428

5529
public function getResolvedEnabledFixtures()
@@ -66,18 +40,20 @@ public function getResolvedEnabledFixtures()
6640
*/
6741
public function testIsConfigEnabledOnNonEnableableConfig()
6842
{
69-
$container = $this->getMockBuilder('Symfony\Component\DependencyInjection\ContainerBuilder')
70-
->getMock()
71-
;
43+
$extension = new EnableableExtension();
7244

73-
$extension = $this->getMockBuilder('Symfony\Component\DependencyInjection\Extension\Extension')
74-
->setMethods(array())
75-
->getMockForAbstractClass()
76-
;
45+
$extension->isConfigEnabled(new ContainerBuilder(), array());
46+
}
47+
}
7748

78-
$r = new \ReflectionMethod('Symfony\Component\DependencyInjection\Extension\Extension', 'isConfigEnabled');
79-
$r->setAccessible(true);
49+
class EnableableExtension extends Extension
50+
{
51+
public function load(array $configs, ContainerBuilder $container)
52+
{
53+
}
8054

81-
$r->invoke($extension, $container, array());
55+
public function isConfigEnabled(ContainerBuilder $container, array $config)
56+
{
57+
return parent::isConfigEnabled($container, $config);
8258
}
8359
}

0 commit comments

Comments
 (0)