Skip to content

Instantly share code, notes, and snippets.

@xyluz
Last active May 21, 2021 13:01
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save xyluz/e87318eedab01d3dfbe6992a691be96a to your computer and use it in GitHub Desktop.
Save xyluz/e87318eedab01d3dfbe6992a691be96a to your computer and use it in GitHub Desktop.
PHPUnit + CakePHP Error

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. :)

Originally posted on medium here

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment