2016-08-12 3 views
2

저는 자바 스크립트 컨트롤러 파일을 디자인 해 왔습니다. 컨트롤러의 인스턴스에 Express의 메소드 Router() 인스턴스가 있는지 테스트하고 싶습니다.모카 : 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 형 라우터를 덕 유형으로 지정할 필요가 없습니다.

express.Router은 생성자가 아니며 instanceof으로 감지 할 수있는 정상적인 프로토 타입 체인을 설정하지 않습니다. 대신 establishes prototype chain manually via hacky mixin technique입니다.

는 그것은

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

덕분에 남자로 테스트 할 수 있습니다. 좋은 생각! –