If you come across this, know that I spent hours trying to figure out what the problem was, and I am putting it out there to help others. It’s going to be short, and most likely uninteresting.

I was working on a small app, my tests were running well, except when I used assertEqualsI so I decided to use assertIdentical as an alternative for those tests that required Equal, basically, Equal is == while identical is === so, they could work interchangeably, just that you have to change the data type to get the desired result, a silly thing to do by the way (just putting it out there).

Anyway, this was the error:

Error: Declaration of PHPUnit_Framework_Comparator_DOMDocument::assertEquals($expected, $actual, $delta = 0, $canonicalize = false, $ignoreCase = false) must be compatible with PHPUnit_Framework_Comparator_Object::assertEquals($expected, $actual, $delta = 0, $canonicalize = false, $ignoreCase = false, array &$processed = Array)

I was working with:

CakePHP 2.x

PHP 7.3.5

PHPUnit 3.x Later Updated to PHPUnit 9.01 (While trying to fix the issue)

My fix

There are 2 ways to fix this, as I later found out:

Method 1:

  • Completely re-install PHPUnit and use the latest version: You should not see this error if you are working with the latest version of PHPUnit.

Method 2:

  • Edit the forbidden file inside the forbidden territory: vendors Folder (Don’t ever do this).

Go into :

vendors/phpunit/phpunit/PHPUnit/Framework/Comparator/DOMDocument.php

Locate method: assertEquals(…

Update the parameters with:

array &$processed = array()

So instead of having:

public function assertEquals($expected, $actual, $delta = 0, $canonicalize = FALSE, $ignoreCase = FALSE)

You have:

public function assertEquals($expected, $actual, $delta = 0, $canonicalize = FALSE, $ignoreCase = FALSE, array &$processed = array())

And that’s it.

If by any chance, this was helpful, let me know. 🙂

Categorized in:

Coding,