jervdesign / php-unit-mock
创建可重用PHPUnit模拟对象的基类
该包的规范存储库似乎已消失,因此该包已被冻结。
0.2.1
2016-03-18 21:33 UTC
Requires
- php: >=5.4
- phpunit/phpunit: >=4.8
This package is not auto-updated.
Last update: 2024-01-17 21:43:34 UTC
README
创建可重用PHPUnit模拟对象的基类
- 允许简单共享模拟对象(构建一次)
- 允许为任何模拟返回值使用简单数组配置
- 模拟可以遵循您项目的类结构
- src
-- MyPackage
--- MyClass
- mocks
-- MyPackage
--- MyClass
示例
测试目标
namespace MyPackage; class MyClass { public function myMethod() { return 'someValue' } }
简单模拟设置
当您的配置与模拟方法和结果一一对应时使用此功能
namespace MyPackage; class MyClassMock extends \PhpUnitMock\Mock { /** * NameSpace and Name of the class to mock * * @var null */ protected $className = '\MyPackage\MyClass'; /** * Build the default mock configuration * * @return array */ public function buildDefaultConfig() { return [ 'myMethod' => 'SOME_TEST_VALUE' ]; } /** * @override to show proper type hinting in IDE * Build PHPUnit Mock in this method * * @return \MyPackage\MyClass */ public function buildMock() { return parent::buildMock(); } }
自定义模拟设置
当您需要对模拟结果进行特殊处理时使用此功能
namespace MyPackage; class MyClassMock extends \PhpUnitMock\Mock { /** * Build the default mock configuration * * @return array */ public function buildDefaultConfig() { return [ 'myMethod' => 'SOME_TEST_VALUE' ]; } /** * @override to show proper type hinting in IDE * Build PHPUnit Mock in this method * * @return \MyPackage\MyClass */ public function buildMock() { /** @var \MyPackage\MyClass $mock */ $mock = $this->testCase->getMockBuilder('\MyPackage\MyClass') ->disableOriginalConstructor() ->getMock(); $mock->method('myMethod') ->will($this->returnValue($this->config['myMethod'])); // Custom mock building here return $mock; } }
简单使用
namespace MyPackage; class MyClassTest extends \PHPUnit_Framework_TestCase { public function testMyMethod() { // Default Mock with default config $mock = MyClassMock::build($this); // Returns 'SOME_TEST_VALUE' from default config $mock->myMethod(); // Over-ride Mock return value $mock = MyClassMock::build( $this, // Add local config, this will be merged with the default config [ 'myMethod' => 'DIFFERENT_TEST_VALUE' ]; ); // Returns 'DIFFERENT_TEST_VALUE' from local config $mock->myMethod(); } }
在IDE中使用类型提示的使用方法
namespace MyPackage; class MyClassTest extends \PHPUnit_Framework_TestCase { public function testMyMethod() { // Default Mock with default config $mock = MyClassMock::get($this)->buildMock(); // Returns 'SOME_TEST_VALUE' from default config $mock->myMethod(); // Over-ride Mock return value $mock = MyClassMock::get( $this, // Add local config, this will be merged with the default config [ 'myMethod' => 'DIFFERENT_TEST_VALUE' ]; )->buildMock(); // Returns 'DIFFERENT_TEST_VALUE' from local config $mock->myMethod(); } }