Problem/Motivation
PHPUnit 12.5.0+ is changing the way that mock objects work:
- Mock objects that do not configure expectations should be converted to stubs. Otherwise, they throw a notice:
No expectations were configured for the mock object for \Drupal\comment\CommentManagerInterface. You should refactor your test code and use a test stub instead. $this->any()is deprecated. It was equivalent to having no expectation, in which case the object should be a stub (see the previous bullet) or a more exact number of expectations should be added.with()is deprecated for stubs because it was deemed to be equally pointless.
Steps to reproduce
- Require PHPUnit 12 with Composer.
- Fix compatibility issues with PHPUnit 12 by applying this patch.
- Run the Unit tests for a library with
--display-phpunit-notices --display-phpunit-deprecations. - Observe the PHPUnit notices that occur.
Proposed resolution
Fix notices in the tests in the Plugin library's tests.
Remaining tasks
User interface changes
Introduced terminology
API changes
Data model changes
Release notes snippet
Issue fork drupal-3579870
Show commands
Start within a Git clone of the project using the version control instructions.
Or, if you do not have SSH keys set up on git.drupalcode.org:
- 3579870-mockobject-fixes
changes, plain diff MR !15121
Comments
Comment #3
dcam commentedComment #4
dcam commentedWhen running these tests without the MR from #3578904: Convert expectation-less test mocks to stubs - UnitTestCase applied I get 4 notices that are unfixed. When I apply the changes from #3578904 there are 0 notices.
Comment #5
smustgrave commentedGot 0 notices on this one but needs a small rebase
Is this actually going to break HEAD without https://www.drupal.org/files/issues/2026-01-25/phpunit12.patch
Comment #6
dcam commentedRebased
Comment #7
smustgrave commentedThis one was good with 0 notices
Comment #8
catchCommitted/pushed to main, thanks!