diff --git a/core/lib/Drupal/Core/Routing/RouteBuilder.php b/core/lib/Drupal/Core/Routing/RouteBuilder.php
index fc12ee8..46f1b34 100644
--- a/core/lib/Drupal/Core/Routing/RouteBuilder.php
+++ b/core/lib/Drupal/Core/Routing/RouteBuilder.php
@@ -85,9 +85,7 @@ public function rebuild() {
         $routes = $parser->parse(file_get_contents($routing_file));
         if (!empty($routes)) {
           foreach ($routes as $name => $route_info) {
-            $defaults = isset($route_info['defaults']) ? $route_info['defaults'] : array();
-            $requirements = isset($route_info['requirements']) ? $route_info['requirements'] : array();
-            $route = new Route($route_info['pattern'], $defaults, $requirements);
+            $route = $this->getRouteFromInfo($route_info);
             $collection->add($name, $route);
           }
         }
@@ -107,4 +105,13 @@ public function rebuild() {
     $this->lock->release('router_rebuild');
   }
 
+  /**
+   * Create a Route object from parsed yaml info.
+   */
+  public function getRouteFromInfo($route_info) {
+    $defaults = isset($route_info['defaults']) ? $route_info['defaults'] : array();
+    $requirements = isset($route_info['requirements']) ? $route_info['requirements'] : array();
+    $options = isset($route_info['options']) ? $route_info['options'] : array();
+    return new Route($route_info['pattern'], $defaults, $requirements, $options);
+  }
 }
diff --git a/core/modules/system/lib/Drupal/system/Tests/Routing/RouteBuilderTest.php b/core/modules/system/lib/Drupal/system/Tests/Routing/RouteBuilderTest.php
new file mode 100644
index 0000000..508d126
--- /dev/null
+++ b/core/modules/system/lib/Drupal/system/Tests/Routing/RouteBuilderTest.php
@@ -0,0 +1,86 @@
+<?php
+
+/**
+ * @file
+ * Contains Drupal\system\Tests\Routing\RouteBuilderTest.
+ */
+
+namespace Drupal\system\Tests\Routing;
+
+use Symfony\Component\Routing\Route;
+use Symfony\Component\Yaml\Parser;
+use Symfony\Component\EventDispatcher\EventDispatcherInterface;
+use Symfony\Component\EventDispatcher\Event;
+use Symfony\Component\EventDispatcher\EventSubscriberInterface;
+use Symfony\Component\Routing\Matcher\Dumper\MatcherDumperInterface;
+
+use Drupal\simpletest\UnitTestBase;
+use Drupal\Core\Database\Database;
+use Drupal\Core\Routing\RouteBuilder;
+use Drupal\Core\Lock\NullLockBackend;
+
+/**
+ * Testcase for RouteBuilder functionality.
+ */
+class RouteBuilderTest extends UnitTestBase {
+  public static function getInfo() {
+    return array(
+      'name' => 'Route Builder test',
+      'description' => 'Confirm that route are built properly.',
+      'group' => 'Routing',
+    );
+  }
+
+  /**
+   * Confirms that route objects are properly built from yaml
+   */
+  public function testRouteBuilding() {
+    $dumper = new DummyMatcherDumper();
+    $lockbackend = new NullLockBackend();
+    $dispatcher = new DummyEventDispatcher();
+    $builder = new RouteBuilder($dumper, $lockbackend,  $dispatcher);
+
+    $yaml =<<<'YAML'
+router_test_1:
+  pattern: '/router_test/test1'
+  defaults:
+    _controller: '\Drupal\router_test\TestControllers::test1'
+  requirements:
+    _access: 'TRUE'
+  options:
+    foo: 'bar'
+YAML;
+
+    $parser = new Parser();
+    $route_info = $parser->parse($yaml);
+
+    $route = $builder->getRouteFromInfo($route_info['router_test_1']);
+
+    $this->assertEqual(get_class($route), 'Symfony\Component\Routing\Route', 'Returned object is a Symfony\Component\Routing\Route.');
+    $this->assertEqual($route->getPattern(), '/router_test/test1', 'Pattern is correct.');
+    $this->assertEqual($route->getDefault('_controller'), '\Drupal\router_test\TestControllers::test1', 'Defaults are correct.');
+    $this->assertEqual($route->getRequirement('_access'), TRUE, 'Requirements are correct.');
+    $this->assertEqual($route->getOption('foo'), 'bar', 'Options are correct.');
+  }
+}
+
+/**
+ * Dummy implementation of EventDispatcherInterface.
+ */
+class DummyEventDispatcher implements EventDispatcherInterface {
+    public function dispatch($eventName, Event $event = null) {}
+    public function addListener($eventName, $listener, $priority = 0) {}
+    public function addSubscriber(EventSubscriberInterface $subscriber) {}
+    public function removeListener($eventName, $listener) {}
+    public function removeSubscriber(EventSubscriberInterface $subscriber) {}
+    public function getListeners($eventName = null) {}
+    public function hasListeners($eventName = null) {}
+}
+
+/**
+ * Dummy implementation of MatcherDumperInterface
+ */
+class DummyMatcherDumper implements MatcherDumperInterface {
+    public function dump(array $options = array()) {}
+    public function getRoutes() {}
+}
