2016-09-16 78 views
6

两个问题:测试Node.js的API与玩笑(和mockgoose)这里

1)是玩笑一个很好的选择,以测试的Node.js(快递)的API?

2)我试图用玩笑带Mockgoose,但我无法弄清楚如何建立连接后运行测试。这里是我的未来在此之前的最后一次尝试:

const Mongoose = require('mongoose').Mongoose 
const mongoose = new Mongoose() 
mongoose.Promise = require('bluebird') 
const mockgoose = require('mockgoose') 

const connectDB = (cb) =>() => { 
    return mockgoose(mongoose).then(() => { 
    return mongoose.connect('mongodb://test/testingDB', err => { 
     if (err) { 
     console.log('err is', err) 
     return process.exit() 
     } 
     return cb(() => { 
     console.log('END') // this is logged 
     mongoose.connection.close() 
     }) 
    }) 
    }) 
} 

describe('test api', connectDB((end) => { 
    test('adds 1 + 2 to equal 3',() => { 
    expect(1 + 2).toBe(3) 
    }) 
    end() 
})) 

的错误是Your test suite must contain at least one test。这个错误对我有点意义,但我无法弄清楚如何解决它。有什么建议么?

输出:

Test suite failed to run 

Your test suite must contain at least one test. 

回答

1

很晚了答案,但我希望能对大家有所帮助。 如果你留意,你的描述块都有它里面没有测试功能。

测试功能实际上是通过描述回调里面..那种,堆栈由于箭头函数回调复杂。

这个示例代码会产生同样的问题..

describe('tests',function(){ 
    function cb() { 
    setTimeout(function(){ 
     it('this does not work',function(end){ 
     end(); 
     }); 
    },500); 
    } 
    cb(); 

    setTimeout(function(){ 
    it('also does not work',function(end){ 
     end(); 
    }); 
    },500); 
}); 

因为到蒙戈的连接是异步,当笑话首先扫描功能找到“测试”内部的描述,它有没有失败。 它貌不惊人,但是这是你在做什么。
我觉得在这种情况下,您的解决方案是有点太聪明(给点它不工作),并将其分解到简单的语句可能已经帮助查明这个问题