Ошибка модульного теста при попытке запустить актив, равный массиву в Matomo

Возможно, для этого потребуется включить расширение PHP. Все тесты с assertEquals падают при использовании usort в массивах.

Взгляните на результат теста на падение ниже:

13) Piwik\Tests\Unit\DataAccess\JoinGeneratorTest::test_sortTablesForJoin_shouldSortTablesWithCustomJoinRequiringEachOther2
Failed asserting that two arrays are equal.
--- Expected
+++ Actual
@@ @@
Array (
    0 => 'log_link_visit_action'
    1 => Array (
        'table' => 'log_action'
-        'tableAlias' => 'log_action_idaction_event_action'
-        'joinOn' => 'log_link_visit_action.idaction_event_action = log_action_idaction_event_action.idaction'
+        'tableAlias' => 'log_action_visit_entry_idaction_name'
+        'joinOn' => 'log_visit.visit_entry_idaction_name = log_action_visit_entry_idaction_name.idaction'
    )
    2 => Array (
        'table' => 'log_action'
-        'tableAlias' => 'log_action_visit_entry_idaction_name'
-        'joinOn' => 'log_visit.visit_entry_idaction_name = log_action_visit_entry_idaction_name.idaction'
+        'tableAlias' => 'log_action_idaction_event_action'
+        'joinOn' => 'log_link_visit_action.idaction_event_action = log_action_idaction_event_action.idaction'
    )
)

/matomo-3.5.1/tests/PHPUnit/Unit/DataAccess/LogQueryBuilder/JoinGeneratorTest.php:428

FAILURES!
Tests: 6521, Assertions: 10544, Failures: 13.

Версия PHP - 7.2.20. Когда я меняю PHP на версию 5.6.37, этот тест проходит.

Bruno Wego 29.08.2018 20:33
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
1
130
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Возможно, вам стоит попробовать assertSame для массивов, которые намного лучше

Ответ принят как подходящий

Порядок сортировки для массивов assertEquals и assertSame должен быть идентичным. Представьте, если вы json_encode и то, и другое, дадут ли они одинаковый результат. Похоже, что ваши массивы находятся в другом порядке сортировки на основе вывода phpunit.

<?php

class ArrayTest extends PHPUnit\Framework\TestCase {

    // Fails
    public function testArraysEqualsDifferentOrder() {
        $a = Array(['3', '2'], '1');
        $b = Array(['2', '3'], '1');

        $this->assertEquals($a, $b);
    }

    // Fails
    public function testArraysSameDifferentOrder() {
        $a = Array(['3', '2'], '1');
        $b = Array(['2', '3'], '1');

        $this->assertSame($a, $b);
    }

    // Passes
    public function testArraysEqualSameOrder() {
        $a = Array(['2', '3'], '1');
        $b = Array(['2', '3'], '1');

        $this->assertEquals($a, $b);
    }

    // Passes
    public function testArraysSameSameOrder() {
        $a = Array(['2', '3'], '1');
        $b = Array(['2', '3'], '1');

        $this->assertSame($a, $b);
    }
}

Другие вопросы по теме