mikolajprzybysz/php-native-wrapper

Object that wrappers every php native method.

v1.0.0 2015-10-30 13:09 UTC

This package is not auto-updated.

Last update: 2024-11-27 19:00:51 UTC


README

This project provides class that can be used to proxy calls to regular functions, therefore making them mockable like every other method call.

Install (include in composer)

"require": {
    "mikolajprzybysz/php-native-wrapper": "^1.0.0"
}

How to use:

1.Add Native class as dependency to the class using native calls

Via constructor

class SampleClass {
    /** @var Native */
    protected $native;
    public function __construct(Native $native){
        $this->native = $native;
    }
}

Via setter

class SampleClass {
    /** @var Native */
    protected $native;
    public function setNative(Native $native){
        $this->native = $native;
    }
}

2.Whenever you need to run native function, call it via $native instance:

class SampleClass {
    /** @var Native */
    protected $native;
    public function sampleMethod(){
        return $native->time();
    }
}

3.Mock it as any other class

class SampleClassTest extends \PHPUnit_Framework_TestCase {
    public function testSampleMethod(){
        $sampleTime = 123;
        $nativeMock = $this->getMock(Native::class);
        $nativeMock->expects($this->once())->method('time')->will($this->returnValue($sampleTime));
        $testObject = new SampleClass($nativeMock);
        $result = $testObject->sampleMethod();
        $this->assertEquals($sampleTime, $result);
    }
}

Unit test

./vendor/bin/phpunit test/MockTest.php --bootstrap vendor/autoload.php

Acceptance test

./vendor/bin/phpunit test/MockTest.php --bootstrap vendor/autoload.php

What it does not support

  • extract
  • sort and any method using reference in it's arguments