Showing posts with label Test. Show all posts
Showing posts with label Test. Show all posts

Tuesday, July 7, 2015

Mocking PHP functions in PHPUnit test

It relies on using namespaces. Call to PHP function must be in the form time() and not \time().

Class to test(Example.php):
<?php
namespace Example;
class Example {
    public function doSomething()
    {
         return time();
    }
}


Test class(ExampleTest.php):
<?php
namespace Example {
    function time()
    {
        return 5;
    }
}
namespace ExampleTest {
    use Example\Example;

    class ExampleTest extends \PHPUnit_Framework_TestCase {
        protected $sut;

        public function setUp()
        {
             $this->sut = new Example();
        }

        public function testDoSomething()
        {
             $this->assertSame(5, $this->sut->doSomething());
        }
    }
}


Note: Auto loading of classes is omitted.