diff --git a/core/modules/system/tests/themes/test_basetheme/test_basetheme.theme b/core/modules/system/tests/themes/test_basetheme/test_basetheme.theme
new file mode 100644
index 0000000..ef6e071
--- /dev/null
+++ b/core/modules/system/tests/themes/test_basetheme/test_basetheme.theme
@@ -0,0 +1,23 @@
+<?php
+
+/**
+ * @file
+ * Add hooks for tests to use.
+ */
+use Drupal\views\ViewExecutable;
+
+/**
+ * Implements hook_views_pre_render().
+ */
+function test_basetheme_views_pre_render(ViewExecutable $view) {
+  // We append the function name to the title for test to check for.
+  $view->setTitle($view->getTitle() . ":" . __FUNCTION__);
+}
+
+/**
+ * Implements hook_views_post_render().
+ */
+function test_basetheme_views_post_render(ViewExecutable $view) {
+  // We append the function name to the title for test to check for.
+  $view->setTitle($view->getTitle() . ":" . __FUNCTION__);
+}
diff --git a/core/modules/system/tests/themes/test_subtheme/test_subtheme.theme b/core/modules/system/tests/themes/test_subtheme/test_subtheme.theme
new file mode 100644
index 0000000..e651807
--- /dev/null
+++ b/core/modules/system/tests/themes/test_subtheme/test_subtheme.theme
@@ -0,0 +1,24 @@
+<?php
+
+/**
+ * @file
+ * Add hooks for tests to use.
+ */
+
+use Drupal\views\ViewExecutable;
+
+/**
+ * Implements hook_views_pre_render().
+ */
+function test_subtheme_views_pre_render(ViewExecutable $view) {
+  // We append the function name to the title for test to check for.
+  $view->setTitle($view->getTitle() . ":" . __FUNCTION__);
+}
+
+/**
+ * Implements hook_views_post_render().
+ */
+function test_subtheme_views_post_render(ViewExecutable $view) {
+  // We append the function name to the title for test to check for.
+  $view->setTitle($view->getTitle() . ":" . __FUNCTION__);
+}
diff --git a/core/modules/views/lib/Drupal/views/Tests/ViewsThemeIntegrationTest.php b/core/modules/views/lib/Drupal/views/Tests/ViewsThemeIntegrationTest.php
new file mode 100644
index 0000000..9cb58be
--- /dev/null
+++ b/core/modules/views/lib/Drupal/views/Tests/ViewsThemeIntegrationTest.php
@@ -0,0 +1,107 @@
+<?php
+
+/**
+ * @file
+ * Contains \Drupal\views\Tests\ViewsThemeIntegrationTest.
+ */
+
+namespace Drupal\views\Tests;
+
+use Drupal\simpletest\WebTestBase;
+
+/**
+ * As views uses a lot of theme related functionality we need to test these too.
+ *
+ * We test against test_basetheme and test_subtheme provided by theme_test
+ */
+class ViewsThemeIntegrationTest extends WebTestBase {
+
+  /**
+   * Used by WebTestBase::setup()
+   *
+   * We need theme_test for testing against test_basetheme and test_subtheme.
+   *
+   * @var array
+   *
+   * @see \Drupal\simpletest\WebTestBase::setup()
+   */
+  public static $modules = array('views', 'node', 'user', 'theme_test');
+
+  /**
+   * {@inheritdoc}
+   */
+  public static function getInfo() {
+    return array(
+      'name' => 'Views theme integration test',
+      'description' => 'Tests the Views theme integration.',
+      'group' => 'Views theming',
+    );
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  protected function setUp() {
+    parent::setUp();
+  }
+
+  /**
+   * Tests for exceptions.
+   */
+  public function testNodesPage() {
+
+    $account = $this->drupalCreateUser(array());
+    $this->drupalLogin($account);
+
+    // Create article for view on the frontpage.
+    $type_values = array(
+      'type' => 'article',
+      'name' => 'Basic article',
+      'published' => TRUE,
+      'promote' => TRUE,
+    );
+    $this->drupalCreateContentType($type_values);
+
+    $values['type'] = 'article';
+    $values['title'] = $this->randomName();
+    $values['promote'] = TRUE;
+    $values['status'] = TRUE;
+    $values['created'] = REQUEST_TIME;
+
+    $node = $this->drupalCreateNode($values);
+    $this->drupalGet('node/' . $node->id());
+
+    \Drupal::service('theme_handler')->enable(array('test_basetheme', 'test_subtheme'));
+
+    // Make base theme default then test for hook invocations.
+    \Drupal::config('system.theme')
+        ->set('default', 'test_basetheme')
+        ->save();
+    $this->assertEqual(\Drupal::config('system.theme')->get('default'), 'test_basetheme');
+
+    // Make sure a views rendered page is touched.
+    $this->drupalGet('node');
+    $this->assertRaw($values['title'], "Title found");
+
+    $this->assertRaw("test_basetheme_views_pre_render", "Views title changed by test_basetheme.test_basetheme_views_pre_render");
+    $this->assertRaw("test_basetheme_views_post_render", "Views title changed by test_basetheme.test_basetheme_views_post_render");
+
+    // Make sub theme default to test for hook invocation
+    // from both sub and base theme.
+    \Drupal::config('system.theme')
+        ->set('default', 'test_subtheme')
+        ->save();
+    $this->assertEqual(\Drupal::config('system.theme')->get('default'), 'test_subtheme');
+
+    // Make sure a views rendered page is touched.
+    $this->drupalGet('node');
+    $this->assertRaw($values['title'], "Title found");
+
+    $this->assertRaw("test_subtheme_views_pre_render", "Views title changed by test_usetheme.test_subtheme_views_pre_render");
+    $this->assertRaw("test_subtheme_views_post_render", "Views title changed by test_usetheme.test_subtheme_views_post_render");
+
+    $this->assertRaw("test_basetheme_views_pre_render", "Views title changed by test_basetheme.test_basetheme_views_pre_render");
+    $this->assertRaw("test_basetheme_views_post_render", "Views title changed by test_basetheme.test_basetheme_views_post_render");
+  }
+
+}
diff --git a/core/modules/views/lib/Drupal/views/ViewExecutable.php b/core/modules/views/lib/Drupal/views/ViewExecutable.php
index c9b097a..0451544 100644
--- a/core/modules/views/lib/Drupal/views/ViewExecutable.php
+++ b/core/modules/views/lib/Drupal/views/ViewExecutable.php
@@ -1360,7 +1360,7 @@ class ViewExecutable {
       // Let the themes play too, because pre render is a very themey thing.
       if (isset($GLOBALS['base_theme_info']) && isset($GLOBALS['theme'])) {
         foreach ($GLOBALS['base_theme_info'] as $base) {
-          $module_handler->invoke($base, 'views_pre_render', array($this));
+          $module_handler->invoke($base->name, 'views_pre_render', array($this));
         }
 
         $module_handler->invoke($GLOBALS['theme'], 'views_pre_render', array($this));
@@ -1384,7 +1384,7 @@ class ViewExecutable {
     // Let the themes play too, because post render is a very themey thing.
     if (isset($GLOBALS['base_theme_info']) && isset($GLOBALS['theme'])) {
       foreach ($GLOBALS['base_theme_info'] as $base) {
-        $module_handler->invoke($base, 'views_post_render', array($this));
+        $module_handler->invoke($base->name, 'views_post_render', array($this));
       }
 
       $module_handler->invoke($GLOBALS['theme'], 'views_post_render', array($this));
