gpt4 book ai didi

php - 在 PHPUnit 中,如何在对模拟方法的连续调用中指示不同的 with()?

转载 作者:IT王子 更新时间:2023-10-29 00:00:53 27 4
gpt4 key购买 nike

我想用不同的预期参数调用我的模拟方法两次。这不起作用,因为 expects($this->once()) 将在第二次调用时失败。

$mock->expects($this->once())
->method('foo')
->with('someValue');

$mock->expects($this->once())
->method('foo')
->with('anotherValue');

$mock->foo('someValue');
$mock->foo('anotherValue');

我也试过:

$mock->expects($this->exactly(2))
->method('foo')
->with('someValue');

但是我该如何添加一个 with() 来匹配第二个调用呢?

最佳答案

你需要使用at():

$mock->expects($this->at(0))
->method('foo')
->with('someValue');

$mock->expects($this->at(1))
->method('foo')
->with('anotherValue');

$mock->foo('someValue');
$mock->foo('anotherValue');

请注意,传递给 at() 的索引适用于对同一模拟对象的所有方法调用。如果第二个方法调用是 bar(),您不会将参数更改为 at()

关于php - 在 PHPUnit 中,如何在对模拟方法的连续调用中指示不同的 with()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5837991/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com