third-engine / factory
提供易于模拟和良好单元测试的对象创建。
Requires
- php: >=5.3.3
- phpunit/phpunit: 4.3.*
This package is not auto-updated.
Last update: 2024-09-14 18:09:42 UTC
README
Factory 用于以标准方式创建对象,这使得从单元测试中替换为测试替身变得容易。这仅在 phpunit 中进行了测试,但没有理由它不能与其他单元测试框架一起工作。
// 这与您的常规代码执行中的 $newObject = new NewObjectClass(); 相当 $newObject = Factory::createNewObject(NewObjectClass::class); $newObject->standardOperations();
然后在单元测试中,有一个简单的方法用测试替身替换 $newObject。
// $newObjectMock 已经是一个模拟对象,并且您希望它替换 $newObject Factory::injectObject(NewObjectClass::class, $newObjectMock);
在许多情况下,您的构造函数将需要参数。使用 Factory,向对象构造函数传递参数非常简单。
// 这与 $newObject = new NewObjectClass($someOtherObject); 相当 $newObject = Factory::createNewObject(NewObjectClass::class, [$someOtherObject]); $newObject->standardOperations();
然后在单元测试中,一切工作方式相同。$newObjectMock 已经是一个模拟对象。Factory::injectObject(NewObjectClass::class, $newObjectMock);
Factory 还支持创建同一对象的多个不同实例。很多时候您需要在多个方法中创建相同的对象。
$newObject1 = Factory::createNewObject(NewObjectClass::class);
// 一段时间后 4newObject2 = Factory::createNewObject(NewObjectClass::class);
// 在测试中,假设 $newObject1Mock 和 $newObject2Mock 已经是模拟对象。使用零基索引来排序您想要的注入。Factory::injectObject(NewObjectClass::class, $newObject1Mock, 0); Factory::injectObject(NewObjectClass::class, $newObject2Mock, 1);