Модульный тест не пройден при попытке запустить активы равные массива в 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.

1

Решение

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

1

Другие решения

Порядок сортировки должен быть одинаковым в массивах для 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);
}
}
1

По вопросам рекламы [email protected]