语法错误 / ymock
使用 YAML 格式创建 PHPUnit 模拟对象
dev-master / 0.1.x-dev
2017-09-11 18:27 UTC
Requires
- php: >=5.6.0
- phpunit/phpunit: 5.*
- symfony/yaml: ^3.3
This package is not auto-updated.
Last update: 2024-09-20 19:35:14 UTC
README
安装
composer require syntaxerro/ymock 0.1.x-dev
配置
bad_query_database_connection: class: "\\PDO" disable_original_constructor: true methods: query: false
测试
./run.sh
概述
传统方法创建模拟对象
class CartServiceTest extends \PHPUnit_Framework_TestCase { // provider etc. public function addProductTest($product, $expectations) { $cart = new CartService( $this->createMockOfDatabase() ); // some test and assertions } private function createMockOfDatabase() { $values = [0, 1, 2]; $statement = $this->getMockBuilder(\PDOStatement::class) ->disableOriginalConstructor() ->getMock(); $statement->method('fetchAll')->willReturn($values); $pdo = $this->getMockBuilder(\PDO::class) ->disableOriginalConstructor() ->getMock(); $pdo->method('query')->willReturn($statement); return $pdo; } }
使用 YMock 创建相同的模拟对象
class CartServiceTest extends \PHPUnit_Framework_TestCase { // provider etc. public function addProductTest($product, $expectations) { $ymock = new \SyntaxErro\YMock\YMock($this, './path/to/mocks.yml'); $mocks = $ymock->getMocks(); $cart = new CartService( $mocks->get('valid_query_database_connection') ); // some test and assertions } }
valid_query_database_connection: class: "\\PDO" disable_original_constructor: true methods: query: class: "\\PDOStatement" disable_original_constructor: true methods: fetchAll: [0, 1, 2]
功能
- 在一个 YAML 文件中为每个测试创建模拟套件
- 轻松创建模拟链
- 配置返回值(支持数组、对象和简单类型)