diff --git a/core/modules/update/src/Tests/UpdateTestBase.php b/core/modules/update/src/Tests/UpdateTestBase.php
index 1b1c9f6..d3b457c 100644
--- a/core/modules/update/src/Tests/UpdateTestBase.php
+++ b/core/modules/update/src/Tests/UpdateTestBase.php
@@ -39,13 +39,13 @@
    *   (optional) A string containing the URL to fetch update data from.
    *   Defaults to 'update-test'.
    *
-   * @see update_test_mock_page()
+   * @see Drupal\update_test\Controller\UpdateTestController::updateTest()
    */
   protected function refreshUpdateStatus($xml_map, $url = 'update-test') {
     // Tell the Update Manager module to fetch from the URL provided by
     // update_test module.
     $this->config('update.settings')->set('fetch.url', _url($url, array('absolute' => TRUE)))->save();
-    // Save the map for update_test_mock_page() to use.
+    // Save the map for UpdateTestController::updateTest() to use.
     $this->config('update_test.settings')->set('xml_map', $xml_map)->save();
     // Manually check the update status.
     $this->drupalGet('admin/reports/updates/check');
diff --git a/core/modules/update/tests/modules/update_test/src/Controller/UpdateTestController.php b/core/modules/update/tests/modules/update_test/src/Controller/UpdateTestController.php
index a2b459f..600d8bf 100644
--- a/core/modules/update/tests/modules/update_test/src/Controller/UpdateTestController.php
+++ b/core/modules/update/tests/modules/update_test/src/Controller/UpdateTestController.php
@@ -6,13 +6,15 @@
  */
 
 namespace Drupal\update_test\Controller;
+
+use Drupal\Core\Controller\ControllerBase;
 use Symfony\Component\HttpFoundation\Response;
+use Symfony\Component\HttpFoundation\BinaryFileResponse;
 
 /**
  * Provides different routes of the update_test module.
  */
-class UpdateTestController {
-
+class UpdateTestController extends ControllerBase {
 
   /**
    * Displays an Error 503 (Service unavailable) page.
@@ -29,10 +31,51 @@ public function updateError() {
   }
 
   /**
-   * @todo Remove update_test_mock_page().
+   * Page callback: Prints mock XML for the Update Manager module.
+   *
+   * The specific XML file to print depends on two things: the project we're
+   * trying to fetch data for, and the desired "availability scenario" for that
+   * project which we're trying to test. Before attempting to fetch this data (by
+   * checking for updates on the available updates report), callers need to define
+   * the 'update_test_xml_map' variable as an array, keyed by project name,
+   * indicating which availability scenario to use for that project.
+   *
+   * @param string $project_name
+   *   The project short name the update manager is trying to fetch data for (the
+   *   fetch URLs are of the form: [base_url]/[project_name]/[core_version]).
+   * @param string $version
+   *   The version of Drupal core.
+   *
+   * @return BinaryFileResponse|Response
+   *   A BinaryFileResponse object containing the content of the XML release file
+   *   for the specified project if one is available; a Response object with no
+   *   content otherwise.
    */
   public function updateTest($project_name, $version) {
-    return update_test_mock_page($project_name, $version);
+    $xml_map = $this->config('update_test.settings')->get('xml_map');
+    if (isset($xml_map[$project_name])) {
+      $availability_scenario = $xml_map[$project_name];
+    }
+    elseif (isset($xml_map['#all'])) {
+      $availability_scenario = $xml_map['#all'];
+    }
+    else {
+      // The test didn't specify (for example, the webroot has other modules and
+      // themes installed but they're disabled by the version of the site
+      // running the test. So, we default to a file we know won't exist, so at
+      // least we'll get an empty xml response instead of a bunch of Drupal page
+      // output.
+      $availability_scenario = '#broken#';
+    }
+
+    $path = drupal_get_path('module', 'update_test');
+    $file = "$path/$project_name.$availability_scenario.xml";
+    $headers = array('Content-Type' => 'text/xml; charset=utf-8');
+    if (!is_file($file)) {
+      // Return an empty response.
+      return new Response('', 200, $headers);
+    }
+    return new BinaryFileResponse($file, 200, $headers);
   }
 
 }
diff --git a/core/modules/update/tests/modules/update_test/update_test.module b/core/modules/update/tests/modules/update_test/update_test.module
index 93c97f4..fe01b21 100644
--- a/core/modules/update/tests/modules/update_test/update_test.module
+++ b/core/modules/update/tests/modules/update_test/update_test.module
@@ -58,56 +58,6 @@ function update_test_update_status_alter(&$projects) {
 }
 
 /**
- * Page callback: Prints mock XML for the Update Manager module.
- *
- * The specific XML file to print depends on two things: the project we're
- * trying to fetch data for, and the desired "availability scenario" for that
- * project which we're trying to test. Before attempting to fetch this data (by
- * checking for updates on the available updates report), callers need to define
- * the 'update_test_xml_map' variable as an array, keyed by project name,
- * indicating which availability scenario to use for that project.
- *
- * @param $project_name
- *   The project short name the update manager is trying to fetch data for (the
- *   fetch URLs are of the form: [base_url]/[project_name]/[core_version]).
- *
- * @return BinaryFileResponse|Response
- *   A BinaryFileResponse object containing the content of the XML release file
- *   for the specified project if one is available; a Response object with no
- *   content otherwise.
- *
- * @see update_test_menu()
- *
- * @deprecated \Drupal\update_test\Controller\UpdateTestController::updateTest()
- */
-function update_test_mock_page($project_name) {
-  $xml_map = \Drupal::config('update_test.settings')->get('xml_map');
-  if (isset($xml_map[$project_name])) {
-    $availability_scenario = $xml_map[$project_name];
-  }
-  elseif (isset($xml_map['#all'])) {
-    $availability_scenario = $xml_map['#all'];
-  }
-  else {
-    // The test didn't specify (for example, the webroot has other modules and
-    // themes installed but they're disabled by the version of the site
-    // running the test. So, we default to a file we know won't exist, so at
-    // least we'll get an empty xml response instead of a bunch of Drupal page
-    // output.
-    $availability_scenario = '#broken#';
-  }
-
-  $path = drupal_get_path('module', 'update_test');
-  $file = "$path/$project_name.$availability_scenario.xml";
-  $headers = array('Content-Type' => 'text/xml; charset=utf-8');
-  if (!is_file($file)) {
-    // Return an empty response.
-    return new Response('', 200, $headers);
-  }
-  return new BinaryFileResponse($file, 200, $headers);
-}
-
-/**
  * Implements hook_filetransfer_info().
  */
 function update_test_filetransfer_info() {
