PHPUnit 10允許在連續呼叫相同方法時指定不同的方法參數
P粉639667504
P粉639667504 2024-04-05 10:38:10
0
1
1553

我有一個方法,作為更大方法的一部分,使用不同的參數呼叫了多次。

$query->where("one", $id);
$query->where("two", "LIKE %{$name}%");
$query->where("three", false);
$query->where("four", true);

我正在使用 PHPUnit 10,我想為這個特定方法寫一個單元測試。我想檢查 where 方法是否使用一些特定參數呼叫了 4 次。

例如:

$mockedQuery->expects($this->exactly(4))
->method("where")
->with(
// Here I'd like to specify the list of arguments
// or perhaps a map or something
)
->willReturn($mockedQuery);

上面的 ->will 不適用於為同一方法的連續呼叫指定不同的參數(或至少我無法讓它工作)。

我嘗試過使用文檔,但不知道到底要搜尋什麼,因此很難找到。

P粉639667504
P粉639667504

全部回覆(1)
P粉798343415

我會回答我自己的問題,因為我必須進行一些挖掘。

對於 PHPUnit 10,方法 withConsecutive (這就是我正在尋找的,我只是不知道它叫這個)已被刪除。不存在官方替代品。

該問題是在 PHPUnit 儲存庫上提出的

#我使用的解決方法是

$matcher = $this->exactly(2);
$this->mock
    ->expects($matcher)
    ->method('get')
    ->willReturnCallback(function (string $param) use ($matcher) {
                match ($matcher->numberOfInvocations()) {
                    1 => $this->assertEquals($param, 'someValue'),
                    2 => $this->assertEquals($param, 'someOtherValue'),
                };
            })
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板