New helper ApiTestCase::setExpectedApiException()
authorAryeh Gregor <ayg@aryeh.name>
Tue, 31 Jul 2018 13:19:10 +0000 (16:19 +0300)
committerReedy <reedy@wikimedia.org>
Thu, 25 Apr 2019 14:50:14 +0000 (15:50 +0100)
This allows setting the expected exception message by the message key,
not text, so it remains correct if the message is updated.  This
function could be defined to work with other exception types too, but it
seems useful to have shortcuts for common types like ApiUsageException
or MWException.

Change-Id: Ic86278e9e1e91eea0c045d2b93342f018e1d8e66

tests/phpunit/includes/api/ApiTestCase.php

index a5ee7dd..974e9a2 100644 (file)
@@ -244,4 +244,17 @@ abstract class ApiTestCase extends MediaWikiLangTestCase {
                        'ApiTestCase::setUp can be slow, tests must be "medium" or "large"'
                );
        }
+
+       /**
+        * Expect an ApiUsageException to be thrown with the given parameters, which are the same as
+        * ApiUsageException::newWithMessage()'s parameters.  This allows checking for an exception
+        * whose text is given by a message key instead of text, so as not to hard-code the message's
+        * text into test code.
+        */
+       protected function setExpectedApiException(
+               $msg, $code = null, array $data = null, $httpCode = 0
+       ) {
+               $expected = ApiUsageException::newWithMessage( null, $msg, $code, $data, $httpCode );
+               $this->setExpectedException( ApiUsageException::class, $expected->getMessage() );
+       }
 }