New helper ApiTestCase::setExpectedApiException()
authorAryeh Gregor <ayg@aryeh.name>
Tue, 31 Jul 2018 13:19:10 +0000 (16:19 +0300)
committerAryeh Gregor <ayg@aryeh.name>
Wed, 1 Aug 2018 11:13:23 +0000 (14:13 +0300)
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 0fce35a..9a27cf1 100644 (file)
@@ -207,4 +207,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() );
+       }
 }