File tree Expand file tree Collapse file tree 2 files changed +45
-0
lines changed
lib/internal/Magento/Framework/TestFramework/Unit/Listener Expand file tree Collapse file tree 2 files changed +45
-0
lines changed Original file line number Diff line number Diff line change 38
38
</exclude >
39
39
</whitelist >
40
40
</filter >
41
+ <listeners >
42
+ <listener class =" Magento\Framework\TestFramework\Unit\Listener\ReplaceObjectManager" />
43
+ </listeners >
41
44
<logging >
42
45
<!-- coverage_html_placeholder
43
46
<log type="coverage-html" target="{{coverage_dir}}/test-reports/coverage" charset="UTF-8" yui="true" highlight="true"/>
Original file line number Diff line number Diff line change
1
+ <?php
2
+ /**
3
+ * Copyright © 2013-2017 Magento, Inc. All rights reserved.
4
+ * See COPYING.txt for license details.
5
+ */
6
+ namespace Magento \Framework \TestFramework \Unit \Listener ;
7
+
8
+ use Magento \Framework \App \ObjectManager ;
9
+ use Magento \Framework \ObjectManagerInterface ;
10
+
11
+ /**
12
+ * The event listener which instantiates ObjectManager before test run
13
+ */
14
+ class ReplaceObjectManager extends \PHPUnit_Framework_BaseTestListener
15
+ {
16
+ /**
17
+ * Replaces ObjectManager before run for each test
18
+ *
19
+ * Replace existing instance of the Application's ObjectManager with the mock.
20
+ *
21
+ * This avoids the issue with a not initialized ObjectManager
22
+ * and makes working with ObjectManager predictable as it always contains clear mock for each test
23
+ *
24
+ * @param \PHPUnit_Framework_Test $test
25
+ * @return void
26
+ */
27
+ public function startTest (\PHPUnit_Framework_Test $ test )
28
+ {
29
+ if ($ test instanceof \PHPUnit_Framework_TestCase) {
30
+ $ objectManagerMock = $ test ->getMockBuilder (ObjectManagerInterface::class)
31
+ ->getMockForAbstractClass ();
32
+ $ createMockCallback = function ($ type ) use ($ test ) {
33
+ return $ test ->getMockBuilder ($ type )
34
+ ->disableOriginalConstructor ()
35
+ ->getMockForAbstractClass ();
36
+ };
37
+ $ objectManagerMock ->method ('create ' )->willReturnCallback ($ createMockCallback );
38
+ $ objectManagerMock ->method ('get ' )->willReturnCallback ($ createMockCallback );
39
+ ObjectManager::setInstance ($ objectManagerMock );
40
+ }
41
+ }
42
+ }
You can’t perform that action at this time.
0 commit comments