一个(或几个)关于 phpunit 中方法 at() 的例子
An example (or several) about method at() in phpunit
谁能告诉我 phpunit 测试双打中 at
方法的示例。我不明白它的用途是什么?
at()
函数的目的是指定调用 mock 上的方法的顺序。如果您要使用 once()
或 exactly()
,则无论调用方法的顺序如何,测试都会通过,因为 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();
}
如果更改函数顺序,将会失败。
一个示例用例可能是您的 class 正在使用连接到服务并检索数据的对象。您可能希望打开连接、检索数据,然后关闭连接。或者它可能需要根据响应做出进一步的请求。无论哪种方式,所有这些操作都需要以特定顺序发生,因此在您的测试中,您将使用 at()
.
谁能告诉我 phpunit 测试双打中 at
方法的示例。我不明白它的用途是什么?
at()
函数的目的是指定调用 mock 上的方法的顺序。如果您要使用 once()
或 exactly()
,则无论调用方法的顺序如何,测试都会通过,因为 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();
}
如果更改函数顺序,将会失败。
一个示例用例可能是您的 class 正在使用连接到服务并检索数据的对象。您可能希望打开连接、检索数据,然后关闭连接。或者它可能需要根据响应做出进一步的请求。无论哪种方式,所有这些操作都需要以特定顺序发生,因此在您的测试中,您将使用 at()
.