PHPUnit 作为 PHP 开发者进行单元测试的利器,其每一次更新都可能带来一些变化。最近,PHPUnit 移除了一个常用的方法:
withConsecutive。这个方法允许开发者针对同一个 Mock 对象的方法,使用不同的参数进行多次断言,在很多场景下非常方便。然而,它的移除给很多开发者带来了困扰,大量的单元测试需要进行修改才能继续正常运行。
那么,如何解决这个问题呢?
seec/phpunit-consecutive-params提供了一个优雅的解决方案。它是一个 composer 包,通过提供一个 trait,让你能够继续使用
withConsecutive的替代方案,而无需对现有的测试代码进行大规模的修改。
Composer在线学习地址:学习地址
安装
首先,你需要使用 Composer 安装这个包:
composer require --dev seec/phpunit-consecutive-params
使用
立即学习“PHP免费学习笔记(深入)”;
安装完成后,只需在你的测试类中使用
SEEC\PhpUnit\Helper\ConsecutiveParamsTrait:
createMock(\stdClass::class);
$mock->expects($this->exactly(3))
->method('foo')
->with(...$this->withConsecutive(
['a', 'b'],
['c', 'd'],
['e', 'f']
));
}
}优势
- 简单易用: 只需安装并 use Trait 即可,无需复杂的配置。
-
平滑迁移: 几乎无需修改现有代码,即可继续使用
withConsecutive
的功能。 - 减少重构工作量: 避免了大量手动修改单元测试的繁琐工作。
实际应用效果
通过使用
seec/phpunit-consecutive-params,你可以轻松地将你的单元测试迁移到新的 PHPUnit 版本,而无需担心
withConsecutive带来的问题。它极大地降低了迁移的成本,让你能够更专注于业务逻辑的测试,而不是花费大量时间在重构测试代码上。
总而言之,
seec/phpunit-consecutive-params是一个非常实用的 PHPUnit 扩展,它提供了一个简单有效的解决方案,帮助开发者应对
withConsecutive的弃用,并实现平滑的单元测试迁移。如果你也遇到了类似的问题,不妨尝试一下这个包,相信它会给你带来惊喜。










