Integration of PHPUnit 3.5.x with CodeIgniter 2.x using a clean way.
PHP JavaScript
Clone or download
Pull request Compare This branch is 3 commits ahead, 7184 commits behind bcit-ci:develop.
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.

PHPUnit integration with CodeIgniter

This is an attempt of integrating PHPUnit with CodeIgniter. This provides a clean way of bootstrapping the framework and then performing tests on the Model layer. The use is very simple as it does not require any change in how a regular CodeIgniter application is built.

How it works

  • The provided PHPUnit bootstrap file sets the CI environment as testing and then loads the framework normally - the code is taken directly from the index.php file.

  • A display_override hook checks if the environment is set to testing or not and when it is, it refrains from outputting the rendered view file

  • The PHPUnit test case file now can get a reference of the CI object using the commonly used &get_instance() method and can load models and other libraries as needed.

  • It is good to have separate database configuration for testing and it might be useful to load the test database with fresh data every time test runs - it can be easily added in the setUp method using the Database Forge classes



class PostTest extends PHPUnit_Framework_TestCase
    private $CI;

    public function setUp()
        $this->CI = &get_instance();

    public function testGetsAllPosts()
        $posts = $this->CI->post->getAll();

        $this->assertEquals(1, count($posts));