timg / fuzzymock
dev-master
2018-06-22 11:05 UTC
This package is not auto-updated.
Last update: 2024-09-15 06:05:12 UTC
README
composer require timg/fuzzymock
Fuzzymock 是一个小型库,帮助创建边缘情况的测试。
有时你可能想要检查两个使用此类不同实现的实现是否以相同的方式工作。例如:
static::assertEquals((new GreeterA)->greet($person), (new GreeterB)->greet($person));
假设你有一个 Person
类
class Person { public $age; public function getAge() { return $this->age; } }
你可以为 Person
创建一个 FuzzyMock
$fuzzyPersonMock = new \Tg\Fuzzymock\FuzzyBuilder(Person::class); $fuzzyPersonMock->fn('getAge') ->couldReturn(new FuzzyFloat(1, 2, 2)) ->couldReturn(new FuzzyCastString(new FuzzyInt())) ; /** @var Person $person */ $personBuilder = $fuzzyPersonMock->createBuilder(); while (true) { $person = $personBuilder->createNew(); echo $person->getAge() . "\n"; // a float, or a string containing a random int }
createBuilder
方法会动态创建一个 PHP 类(没有反射等)。目前还没有基准测试,但 FuzzyMock 应该非常快。