2017-10-04 80 views
1

我一直在尋找一個很好的模式來單元測試路由我已經在我的應用程序中配置,以便我知道指定的模塊存在磁盤上定義。Aurelia單元測試路徑路徑到模塊

下面是一個例子路由配置:

import { Aurelia, PLATFORM } from 'aurelia-framework'; 
import { Router, RouterConfiguration } from 'aurelia-router'; 

export class App { 
    params = new bindParameters(); 
    router: Router; 


    configureRouter(config: RouterConfiguration, router: Router) { 
     config.title = 'Aurelia'; 
     config.map([{ 
      route: ['', 'home'], 
      name: 'home', 
      settings: { icon: 'home' }, 
      moduleId: PLATFORM.moduleName('../home/home'), 
      nav: true, 
      title: 'Home' 
     }, { 
      route: 'sample', 
      name: 'sample', 
      settings: { icon: 'education' }, 
      moduleId: PLATFORM.moduleName('../sample/index'), 
      nav: true, 
      title: 'Sample Information' 
     }]); 

     this.router = router; 
    } 
} 

class bindParameters { 
    user = "user_name"; 
} 

爲了測試它,我花了傳遞然後檢查是否存在一個路由器的一個實例的方法:

import { App } from './app'; 
import jasmine from 'jasmine'; 
import { Container } from "aurelia-framework"; 
import { RouterConfiguration, Router } from "aurelia-router"; 

describe('application routes', function() { 
    let app: App; 
    let router: Router; 
    let routerConfiguration: RouterConfiguration; 
    let configureRouter: Promise<void>; 

    beforeEach(() => { 
     var container = new Container().makeGlobal(); 
     routerConfiguration = container.get(RouterConfiguration); 
     router = container.get(Router); 
     app = new App(); 
     app.configureRouter(routerConfiguration, router); 
     configureRouter = router.configure(routerConfiguration); 
     routerConfiguration.exportToRouter(router); 
    }); 

    it('should exist for sample', function() { 
     expect(router).not.toBeNull(); 
     //configureRouter.then(function() { 
     //var route = router.routes.find((route) => route.name == 'sample'); 
     // add some assert that the sample module can be found 
     // done(); 
     //}); 
    }); 
}); 

我現在問題是容器正在返回一個空路由器,如當前測試所示。我發現的最接近的模式是在this question

我在示例測試中缺少什麼,還有沒有更好的方法來測試路由配置?

+0

當我按原樣複製代碼時,它可以正常工作。路由器不是空的,測試通過。 – thinkOfaNumber

+0

@thinkOfaNumber感謝您花時間運行我的測試。原來,這是我如何設置噶瑪的依賴。有時候在另一天重新看到問題。 –

+0

不客氣! – thinkOfaNumber

回答

0

看來@thinkOfaNumber是對的。原來我的測試很好,但我缺少反射元數據。當我應用this stackoverflow post中概述的修復程序時,我的測試通過了。