Comments (7)
Did you uncomment code to enable monkey patching in tests/Bootstrap
.php ?
See https://github.com/kenjis/ci-phpunit-test/blob/master/docs/HowToWriteTests.md#monkey-patching
Working example: https://github.com/kenjis/ci-app-for-ci-phpunit-test/blob/master/application/tests/Bootstrap.php#L299-L322
from ci-phpunit-test.
I installed CodeIgniter 3.0.1 and ci-phpunit-test:
$ composer create-project kenjis/codeigniter-composer-installer ci-rest
$ cd ci-rest
$ composer require kenjis/ci-phpunit-test:1.0.x@dev --dev
$ php vendor/kenjis/ci-phpunit-test/install.php
And I edited tests/Bootstrap.php
to enable monkey patching:
--- a/application/tests/Bootstrap.php
+++ b/application/tests/Bootstrap.php
@@ -295,7 +295,6 @@ switch (ENVIRONMENT)
* If you want to use monkey patching, uncomment below code and configure
* for your application.
*/
-/*
require __DIR__ . '/_ci_phpunit_test/patcher/bootstrap.php';
MonkeyPatchManager::init([
'cache_dir' => APPPATH . 'tests/_ci_phpunit_test/tmp/cache',
@@ -320,7 +319,6 @@ MonkeyPatchManager::init([
],
'exit_exception_classname' => 'CIPHPUnitTestExitException',
]);
-*/
/*
* -------------------------------------------------------------------
And I installed codeigniter-restserver files.
Then I wrote a test case:
<?php
class Example_test extends TestCase
{
public function test_users()
{
$output = $this->request('GET', 'api/example/users');
$this->assertEquals(
'[{"id":1,"name":"John","email":"[email protected]","fact":"Loves coding"},{"id":2,"name":"Jim","email":"[email protected]","fact":"Developed on CodeIgniter"},{"id":3,"name":"Jane","email":"[email protected]","fact":"Lives in the USA","0":{"hobbies":["guitar","cycling"]}}]',
$output
);
}
}
$ phpunit --debug controllers/api/Example_test.php
PHPUnit 4.7.7 by Sebastian Bergmann and contributors.
Warning: The Xdebug extension is not loaded
No code coverage will be generated.
Starting test 'Example_test::test_users'.
E
Time: 142 ms, Memory: 4.25Mb
There was 1 error:
1) Example_test::test_users
CIPHPUnitTestExitException: exit() called in REST_Controller::response()
/home/kenji/tmp/ci-rest/application/libraries/REST_Controller.php:746
/home/kenji/tmp/ci-rest/application/libraries/REST_Controller.php:665
/home/kenji/tmp/ci-rest/application/tests/_ci_phpunit_test/CIPHPUnitTestRequest.php:285
/home/kenji/tmp/ci-rest/application/tests/_ci_phpunit_test/CIPHPUnitTestRequest.php:246
/home/kenji/tmp/ci-rest/application/tests/_ci_phpunit_test/CIPHPUnitTestRequest.php:93
/home/kenji/tmp/ci-rest/application/tests/_ci_phpunit_test/CIPHPUnitTestCase.php:105
/home/kenji/tmp/ci-rest/application/tests/controllers/api/Example_test.php:7
FAILURES!
Tests: 1, Assertions: 0, Errors: 1.
[Edited] Fixed test case and the results.
from ci-phpunit-test.
I found we need to fix REST_Controller for ci-phpunit-test.
See kenjis/codeigniter-restserver-with-ci-phpunit-test@73a59c9
from ci-phpunit-test.
Sorry, the patch for REST_Controller.php
should be:
--- a/application/libraries/REST_Controller.php
+++ b/application/libraries/REST_Controller.php
@@ -653,6 +653,11 @@ abstract class REST_Controller extends CI_Controller {
{
call_user_func_array([$this, $controller_method], $arguments);
}
+ catch (CIPHPUnitTestExitException $ex)
+ {
+ // This block is for ci-phpunit-test
+ throw $ex;
+ }
catch (Exception $ex)
{
// If the method doesn't exist, then the error will be caught and an error response shown
from ci-phpunit-test.
I added documentation for CodeIgniter Rest Server:
https://github.com/kenjis/ci-phpunit-test/blob/master/docs/HowToWriteTests.md#codeigniter-rest-server
from ci-phpunit-test.
@RodolfoSilva Did you solve your problem?
from ci-phpunit-test.
Yes, thanks.
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
- Mocking DB object can't use getDouble? HOT 1
- 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.