2016-08-12 44 views
2

我一直在設計一個javascript控制器文件,我想測試一下我的控制器的實例是否有express的方法Router()的實例。摩卡:快速測試實例的方法路由器

import {expect} from 'chai'; 
import {UF_Controller} from '../../controllers/uf.controller.js'; 

describe('UF Controller', UFControllerDescription); 

function UFControllerDescription(){ 
    it('1. Should be have a express router instance', spec1); 

    function spec1(){ 
     expect(UF_Controller.router).itself.to.respondTo('get'); 
     expect(UF_Controller.router).itself.to.respondTo('post'); 
     expect(UF_Controller.router).itself.to.respondTo('put'); 
     expect(UF_Controller.router).itself.to.respondTo('delete'); 
    } 
} 

和我的控制器

import express from 'express'; 
import { uf } from '../models/uf.model'; 

class UFController{ 

    constructor(){ 
     this.router = express.Router(); 
     this.router.get('/', this.getAll); 
    } 

    getAll(req, res, next){ 
     res.json(uf.todayUF()); 
    } 

    getUF(req, res, next){ 
    } 

    insertUF(req, res, next){ 
    } 

    replaceUF(req, res, next){ 
    } 

    updateUF(req, res, next){ 
    } 

    deleteUF(req, res, next){ 
    } 
} 

export const UF_Controller = new UFController(); 

我的問題是: 這是一個有效的方式檢查明確路由器的一個實例???

回答

4

有沒有需要鴨式快速路由器。

express.Router不是構造函數,也沒有建立可以用instanceof檢測到的正常原型鏈。相反,它establishes prototype chain manually via hacky mixin technique

它可以與

expect(Object.getPrototypeOf(UF_Controller.router)).to.equal(express.Router); 
+0

感謝的人進行測試。好主意! –