PHPUnit имеет некоторую встроенную рекурсивную функцию сравнения массива?

Часть тестирования, которое я должен буду сделать, потребует сравнения известного массива с результатом, который я получаю от функций, которые я буду выполнять.

Для сравнения массивов рекурсивно:

  • PHPUnit имеет встроенную функцию?
  • У кого-то здесь есть некоторый код, который они создали для совместного использования?
  • Это будет чем-то, что я должен буду создать самостоятельно?
25
задан Ben Dauphinee 30 May 2010 в 01:10
поделиться

1 ответ

Да, это так. assertEquals () и assertNotEquals () документация .

В частности:

assertEquals ()

 assertEquals (смешанный $ ожидаемый, смешанный $ фактический [, строка $ message = ''])

Сообщает об ошибке, идентифицированной $ message , если две переменные $ expected и $ actual не равны.

assertNotEquals () является обратным этому утверждению и принимает те же аргументы.

Код проверки:

public function testArraysEqual() {
    $arr1 = array( 'hello' => 'a', 'goodbye' => 'b');
    $arr2 = array( 'hello' => 'a', 'goodbye' => 'b');

    $this->assertEquals($arr1, $arr2);
}

public function testArraysNotEqual() {
    $arr1 = array( 'hello' => 'a', 'goodbye' => 'b');
    $arr2 = array( 'hello' => 'b', 'goodbye' => 'a');

    $this->assertNotEquals($arr1, $arr2);
}

[РЕДАКТИРОВАТЬ]

Вот код для неупорядоченных списков aLists:

public function testArraysEqualReverse() {
    $arr1 = array( 'hello' => 'a', 'goodbye' => 'b');
    $arr2 = array( 'goodbye' => 'b', 'hello' => 'a');

    $this->assertEquals($arr1, $arr2);
}

Этот тест не проходит:

public function testArraysOutOfOrderEqual() {
    $arr1 = array( 'a', 'b');
    $arr2 = array( 'b', 'a');

    $this->assertEquals($arr1, $arr2);
}

С сообщением:

Failed asserting that 
Array
(
    [0] => b
    [1] => a
)
 is equal to 
Array
(
    [0] => a
    [1] => b
)
27
ответ дан 28 November 2019 в 21:34
поделиться
Другие вопросы по тегам:

Похожие вопросы: