2015-02-24 191 views
0

這是我認爲應該工作的測試。摩卡和柴承諾超時

var chai = require('chai'), 
    chaiAsPromised = require('chai-as-promised'), 
    assert = require('chai').assert, 
    should = require('chai').should(), 
    saveImage = require('helpers/save-image'), 
    Mocha = require('mocha'), 
    path = require('path'), 
    getUser = require('helpers/get-user') 

describe('GetUser', function() { 

    describe("getUser(token)", function() { 

     it("should return a user's ID when given token", function() { 
      this.timeout(4000) 

      var token = "LONG-STRING" 

      return getUser(token).should.eventually.include('ANOTHER-STRING') 
     }) 

    }) 

}) 

下面是函數

var User = require('../models/userModel'), 
    Q = require('q') 

module.exports = function getUser (token) { 
    return Q.Promise(function (resolve, reject, notify) { 

     User.findOne({ token: token }).exec() 
     .then(function (data) { 
      if (!data) 
       reject(new Error("There was a problem getting the user. No user with that token.")) 

      resolve(data.id) 
     }, function (error) { 
      reject(new Error(error)) 
     }) 
    }) 
} 

當我叫我的應用程序這個功能,並使用節點忒修斯調試器,我看到上線功能8起火災(.then(function (data) { ...)。

但是當我用調試器運行Mocha時,我發現該函數或其他任何函數都不會觸發。我只在第4行和第5行看到一個電話被觸發。測試正在使用我在我的應用前端使用的完全相同的LONG-STRING作爲token參數。

爲什麼Mocha和節點如何看待我的應用程序有什麼不同,以及如何使此測試工作?

+0

將超時設置爲'this.timeout(999999);' – harshes53 2015-02-24 23:03:34

+0

@ hbk35問題是應用程序未運行,因此無法執行任何Mongoose命令。見下面的答案。 – Noah 2015-02-25 02:28:56

回答

0

問題是,該應用程序沒有實際運行,我需要啓動它像app = require('../server.js')