2016-09-16 75 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); 
}); 

因爲到蒙戈的連接是異步,當笑話首先掃描功能找到「測試」內部的描述,它有沒有失敗。 它貌不驚人,但是這是你在做什麼。
我覺得在這種情況下,您的解決方案是有點太聰明(給點它不工作),並將其分解到簡單的語句可能已經幫助查明這個問題