gpt4 book ai didi

php - 期望 PHPUnit 中的变量列表

转载 作者:行者123 更新时间:2023-12-04 04:34:00 29 4
gpt4 key购买 nike

我有一个适配器,它有一个方法,它采用可变参数列表,并将其转发给一个在我使用的框架中采用相同参数的方法。我想测试我的适配器是否正确转发了参数。然而,我不希望我的测试知道框架支持哪种参数。

我有一个工作期望如下:

$context->expects( $this->once() )
->method( 'msg' )
->with(
$this->equalTo( $someMessageArguments[0] ),
$this->equalTo( $someMessageArguments[1] ),
$this->equalTo( $someMessageArguments[2] )
);

这显然不好,因为它假定变量列表的长度为 3。我想使用数据提供程序并使用不同的长度进行测试,在这种情况下,此代码不会削减它。

有没有一种理智的方法可以通过 PHPUnit API 做到这一点?我修改了这个,它也有效,虽然看起来也很邪恶:
$invocationMocker = $context->expects( $this->once() )
->method( 'msg' );

$invocationMocker->getMatcher()->parametersMatcher
= new PHPUnit_Framework_MockObject_Matcher_Parameters( $someMessageArguments );

如果没有办法通过 PHPUnit API 很好地做到这一点,有没有比这里列出的两个更好的方法?

最佳答案

我还没有找到使用 PHPUnit 模拟的方法。

使用 Mockery,您可以存档:

$mock->shouldReceive('msg')
->once()
->withArgs($someMessageArguments);

就我个人而言,我通常更喜欢 Mockery 而不是 PHPUnit 模拟。

https://github.com/padraic/mockery

关于php - 期望 PHPUnit 中的变量列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20078008/

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