PHPUnit 删除了 Consecutive。有多种方法可以解决它以重现类似的行为,我在这个网站中找到了这些方法。
这个问题不是关于解决方法或替换 - 我想知道对于某些似乎需要这种删除行为的情况,推荐的方法是什么。
举个例子。
我们有一个 Client 对象。该客户端有两个方法,一个 getToken 和一个 postData。
class MyClient {
public function __construct(private HttpClient $client)
{
}
public function getToken(): string
{
return $this->client->post('some-url', ['some parameters'];
}
public function postData(array $data, string $token = null): void
{
if(is_null($token))
{
$token = $this->getToken();
}
$this->client->post('some-other-url', ['token' => $token, 'some-more-params']);
}
如果没有
withConsecutive
,模拟这个的方法是什么?
PHPUnit
withConsecutive()
的升级方式大约有大约 10 种变体。如果有参考,后面加 willReturn*()
或 willReturnOnConsecutive()
。
我没有创建仅适合一个特定问题的答案,而是写了一篇文章来解释如何升级所有类型的组合。
参见: https://tomasvotruba.com/blog/how-to-upgrade-deprecated-phpunit-with-consecutive
希望您会发现它很有用。
它包括 PHP 7.* 就绪代码(没有
match
),可以在 PHPUnit 9(需要 7.3+)中使用