0
請問任何人,請給我一個在phpunit測試雙打中使用at
方法的示例。我不明白它的目的是什麼?有關phpunit中的()方法的示例(或幾個)
請問任何人,請給我一個在phpunit測試雙打中使用at
方法的示例。我不明白它的目的是什麼?有關phpunit中的()方法的示例(或幾個)
at()
函數的用途是指定應該調用模擬方法的順序。如果您要使用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();
}
若功能順序發生了變化會失敗。
示例用例可能是您的類正在使用連接到服務並檢索數據的對象。您希望打開連接,檢索數據,然後關閉連接。或者可能需要根據響應提出進一步的請求。無論哪種方式,所有這些操作都需要按照特定的順序進行,因此在您的測試中,您可以使用at()
。