Comments (1)
I fixed it by overriding getDouble
at /application/tests/TestCase.php
:
<?php
class TestCase extends CIPHPUnitTestCase {
/**
* Override to fix stub bug
*/
public function getDouble($classname, $params, $constructor_params = false) {
$mockBuilder = $this->getMockBuilder($classname);
if ($constructor_params === false) {
$mockBuilder->disableOriginalConstructor();
}
elseif (is_array($constructor_params)) {
$mockBuilder->setConstructorArgs($constructor_params);
}
$methods = [];
$onConsecutiveCalls = [];
$otherCalls = [];
foreach ($params as $key => $val) {
if (is_int($key)) {
$onConsecutiveCalls = array_merge($onConsecutiveCalls, $val);
$methods[] = array_keys($val)[0];
} else {
$otherCalls[$key] = $val;
$methods[] = $key;
}
}
$mock = $mockBuilder->setMethods($methods)->getMock();
foreach ($onConsecutiveCalls as $method => $returns) {
$mock->expects($this->any())->method($method)
->will(
call_user_func_array(
[$this->testCase, 'onConsecutiveCalls'],
$returns
)
);
}
foreach ($otherCalls as $method => $return) {
if (is_object($return) && ($return instanceof PHPUnit_Framework_MockObject_Stub || $return instanceof PHPUnit\Framework\MockObject\Stub\Stub)) {
$mock->expects($this->any())->method($method)
->will($return);
}
elseif (is_object($return) && $return instanceof Closure) {
$mock->expects($this->any())->method($method)
->willReturnCallback($return);
}
elseif ($return === ':void') {
$mock->expects($this->any())->method($method);
}
else {
$mock->expects($this->any())->method($method)
->willReturn($return);
}
}
return $mock;
}
}
from ci-phpunit-test.
Related Issues (20)
- 3.0.2 release date? HOT 2
- Coverage report is acting weird HOT 2
- Cannot create mock whose methods throw exceptions HOT 2
- How to extend the test runner for post operations? HOT 4
- 3.x new version with Updates for PHP 8.1 HOT 3
- How to stop PHP code execution when exit() in unit test? HOT 5
- Argument 1 passed to PHPUnit\Runner\TestSuiteSorter::reorderTestsInSuite() must implement interface PHPUnit\Framework\Test, instance of PHPUnit\Framework\TestSuite given HOT 3
- PHPUnit 9.5.24 + CodeIgniter 3.1.13 + PHP 8.1 HOT 2
- Session problem HOT 8
- How to clear RAM memory after run testcase in testsuite? HOT 3
- How to mock DB in CI? HOT 1
- PHP Fatal error: Uncaught Error: Class "TestCase" not found HOT 2
- Replacement of helper function redirect() does not work HOT 3
- cant set session $this->session->userdata HOT 1
- Upgrading to CodeIgniter4 is strongly recommended
- How to test external API with json response? HOT 1
- 1.0.2 fails with phpunit <7 when installed with "--from-composer" HOT 2
- issue during code coverage when referencing $this->uri in a view HOT 5
- Add support for php 8.2 HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from ci-phpunit-test.