2017-11-01 10 views
0

내가 제대로 코드의이 비트를 테스트하는 방법을 알아내는 어려움에 봉착를 완료하는 데 실패모카 테스트

const chai = require('chai') 
const chaiHttp = require('chai-http') 
const restify = require('restify') 
const errs = require('restify-errors') 

const expect = chai.expect 
chai.use(chaiHttp) 

const willerror = true 

const server = restify.createServer() 
server.get('/', function (req, res, next) { 
    if (!willerror) res.send() 
    next(willerror ? new errs.InternalServerError() : null) 
}) 

describe('Server test', function() { 
    before(async function() { 
    const c = {config: {dev: {driver: 'sqlite3', filename: ':memory:'}}} 
    const dbm = require('db-migrate').getInstance(true, c) 
    dbm.silence(true) 
    await dbm.reset().then(() => dbm.up('all', 'all')) 
    }) 
    after(function (done) { 
    server.close(done) 
    }) 
    it('posts', function (done) { 
    const client = chai.request(server) 
    client.get('/') 
     .end((err, res) => { 
     expect(err).to.be.null 
     expect(res).to.have.status(200) 
     done() 
     }) 
    }) 
}) 

(참고 : 적어도 하나의 마이그레이션이 필요하지만이 될 수 있습니다 비어 있음 : db-migrate create one으로 충분).

는 출력 내가 얻을 다음 before() 전화의 내용을 제거

enter image description here

는 (떠나 단지 before(async function(){})) 내가 기대했던 것과 무엇을 제공합니다

enter image description here

왜 때로 믿을 수 ' 이 테스트가 끝났습니까?

답변

0

db-migrate registers an uncaughtException handler가 나타납니다.

패배 시키려면 db-migrate에 전달 된 구성 개체에 throwUncatched: true을 추가하십시오. 내 경우 :

const c = {throwUncatched: true, config: {dev: {driver: 'sqlite3', filename: ':memory:'}}}