Rumah  >  Soal Jawab  >  teks badan

PHPUnit 10 membenarkan menentukan parameter kaedah yang berbeza apabila memanggil kaedah yang sama berturut-turut

Saya mempunyai kaedah yang dipanggil beberapa kali dengan parameter berbeza sebagai sebahagian daripada kaedah yang lebih besar.

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

Saya menggunakan PHPUnit 10 dan saya ingin menulis ujian unit untuk kaedah khusus ini. Saya ingin menyemak sama ada kaedah where dipanggil 4 kali dengan beberapa parameter tertentu.

Contohnya:

$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 di atas tidak berfungsi untuk menentukan parameter berbeza untuk panggilan berturut-turut kepada kaedah yang sama (atau sekurang-kurangnya saya tidak dapat menjalankannya).

Saya cuba menggunakan dokumentasi tetapi tidak tahu apa sebenarnya yang perlu dicari jadi sukar untuk dicari.

P粉639667504P粉639667504221 hari yang lalu1487

membalas semua(1)saya akan balas

  • P粉798343415

    P粉7983434152024-04-06 00:53:32

    Saya akan menjawab soalan saya sendiri kerana saya perlu melakukan beberapa penggalian.

    Untuk PHPUnit 10, kaedah withConsecutive (itulah yang saya cari, cuma saya tidak tahu ia dipanggil ini) telah dialih keluar. Tiada pengganti rasmi wujud.

    Isu ini ditanya pada repositori PHPUnit

    Penyelesaian yang saya gunakan ialah

    $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'),
                    };
                })

    balas
    0
  • Batalbalas