2016-08-12 100 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

感谢的人进行测试。好主意! –