mikolajprzybysz/php-native-wrapper

包装每一个PHP原生方法的对象。

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

This package is not auto-updated.

Last update: 2024-09-18 18:11:53 UTC


README

此项目提供了一种类,可用于代理对常规函数的调用,因此使它们可以像其他方法调用一样进行模拟。

安装(包含在composer中)

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

如何使用

1.将Native类作为依赖项添加到使用原生调用的类中

通过构造函数

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

通过设置器

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

2.每次需要运行原生函数时,通过$native实例调用它

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

3.像其他类一样对其进行模拟

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);
    }
}

单元测试

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

验收测试

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

不支持的功能

  • extract
  • sort和任何使用其参数的引用的方法