关于phpunit中at()方法的一个(或几个)示例
请任何人给我举一个phpunit测试中的关于phpunit中at()方法的一个(或几个)示例,phpunit,test-double,Phpunit,Test Double,请任何人给我举一个phpunit测试中的at方法的例子。我不明白它的用途是什么?函数的作用是指定调用mock上的方法的顺序。如果要使用一次()或精确(),则无论调用方法的顺序如何,测试都会通过,因为PHPUnit只是检查方法是否在测试期间调用,而不是何时调用 例如: class FooTest extends PHPUnitTestCase { public function testProperOrderOfMethods() { $mockObject = $thi
at
方法的例子。我不明白它的用途是什么?函数的作用是指定调用mock上的方法的顺序。如果要使用一次()
或精确()
,则无论调用方法的顺序如何,测试都会通过,因为PHPUnit只是检查方法是否在测试期间调用,而不是何时调用
例如:
class FooTest extends PHPUnitTestCase {
public function testProperOrderOfMethods() {
$mockObject = $this->getMockBuilder('BarObject')
->setMethods(['baz', 'boz'])
->getMock();
$mockObject->expects($this->at(0))
->method('boz');
$mockObject->expects($this->at(1))
->method('bar');
$sut = new Foo();
$sut->methodBeingTested($mockObject);
}
这要求我们的函数需要如下所示:
public function methodBeingTested($dependecy) {
$dependency->boz();
$dependency->bar();
}
如果更改功能顺序,则会失败
一个示例用例可能是您的类正在使用连接到服务并检索数据的对象。您可能希望打开连接,检索数据,然后关闭连接。或者,它可能需要根据响应提出进一步的请求。无论哪种方式,所有这些操作都需要以特定的顺序进行,因此在测试中,您将使用
at()
函数at()
的目的是指定调用模拟上的方法的顺序。如果要使用一次()
或精确()
,则无论调用方法的顺序如何,测试都会通过,因为PHPUnit只是检查方法是否在测试期间调用,而不是何时调用
例如:
class FooTest extends PHPUnitTestCase {
public function testProperOrderOfMethods() {
$mockObject = $this->getMockBuilder('BarObject')
->setMethods(['baz', 'boz'])
->getMock();
$mockObject->expects($this->at(0))
->method('boz');
$mockObject->expects($this->at(1))
->method('bar');
$sut = new Foo();
$sut->methodBeingTested($mockObject);
}
这要求我们的函数需要如下所示:
public function methodBeingTested($dependecy) {
$dependency->boz();
$dependency->bar();
}
如果更改功能顺序,则会失败
一个示例用例可能是您的类正在使用连接到服务并检索数据的对象。您可能希望打开连接,检索数据,然后关闭连接。或者,它可能需要根据响应提出进一步的请求。无论哪种方式,所有这些操作都需要按照特定的顺序进行,因此在测试中,您将使用at()