lancerhe / phpunit-mock
PHPUnit 扩展,使用 Runkit 模拟 PHP 内部函数。
1.1.1
2017-10-01 07:12 UTC
Requires
- ext-runkit: *
Requires (Dev)
- phpunit/phpunit: 6.3.0
This package is auto-updated.
Last update: 2024-09-05 15:10:43 UTC
README
PHPUnit 扩展,使用 Runkit 模拟 PHP 内部函数。
需求
*这是一个可选需求。Runkit 目前不支持覆盖内部函数(exit、die 等)。
安装
使用 composer,在 composer.json 文件中添加以下内容
{
"require": {
"lancerhe/phpunit-mock": "dev-master"
}
}
函数示例
ExampleClass.php
<?php
class ExampleClass {
public function doExample() {
return date();
}
}
ExampleClassTest.php
<?php
class ExampleClassTest extends \PHPUnit_Framework_TestCase {
/**
* @test
*/
public function return_expected_value() {
$param = 'Y-m-d H:i:s';
$value = 'non date value';
$mockFunction = new PHPUnit_Extensions_MockFunction('date', $this);
$mockFunction->expects($this->once())
->with($this->equalTo($param))
->will($this->returnValue($value));
$exampleClass = new ExampleClass();
$this->assertEquals($value, $exampleClass->doExample($param));
}
}
类 Example
ExampleClass.php
<?php
class Calculate {
public $a, $b;
public function __construct($a, $b) {
$this->a = $a;
$this->b = $b;
}
public function add() {
return $this->a + $this->b;
}
public function minus() {
return $this->a - $this->b;
}
}
ExampleClassTest.php
<?php
class PHPUnit_Extensions_MockClassTest extends \PHPUnit_Framework_TestCase {
/**
* @test
*/
public function method_return_expected_value() {
$value = 'non value';
$mockClass = new PHPUnit_Extensions_MockClass('Calculate', ['add'], $this);
$mockClass->expects($this->any())
->method('add')
->will($this->returnValue($value));
$this->assertEquals($value, (new Calculate(4, 2))->add());
}
}