       initialize = sinon.spy proto, 'initialize'
       action     = sinon.spy proto, 'show'
 
-      paramsStore = [params]
-      optionsStore = [options]
-      mediator.publish 'router:match', route1, params, options
-
-      refreshParams()
-      paramsStore.push params
-      optionsStore.push options
-      mediator.publish 'router:match', route1, params, options
+      paramsStore = []
+      optionsStore = []
+
+      for i in [0..1]
+        refreshParams()
+        paramsStore.push params
+        optionsStore.push options
+        publishMatch route1, params, options
 
       loadTest1Controller ->
         expect(initialize).was.calledTwice()

        #console.debug 'Test2Controller#dispose'
        super

    # Define a test controller AMD modules
    test1Module = 'controllers/test1_controller'
    test2Module = 'controllers/test2_controller'
    define test1Module, -> Test1Controller
    define test2Module, -> Test2Controller

    # Helpers for asynchronous tests
    loadTest1Controller = (callback) -> require [test1Module], callback
    loadTest2Controller = (callback) -> require [test2Module], callback

    # Create a fresh Dispatcher instance for each test

    beforeEach ->
      dispatcher = new Dispatcher()

    afterEach ->
      dispatcher.dispose()
      dispatcher = null

    # Default options which are added on first dispatching
    addedOptions =
      changeURL: true
      forceStartup: false

    # Helper for creating params/options to compare with
    create = ->

        expect(d.previousRoute.controller).to.be 'test1'
        expect(d.currentRoute.controller).to.be 'test1'
        expect(d.currentController).to.be.a Test1Controller
        expect(d.currentRoute.action).to.be actionName
        expect(d.currentRoute.path).to.be redirectToURLRoute.path

        expect(dispatch).was.calledOnce()

