【问题标题】:Mocha and Chai-as-promised time outMocha 和 Chai-as-promised 超时
【发布时间】:2015-02-24 19:54:55
【问题描述】:

这是我认为应该有效的测试。

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 ) )
        })
    })
}

当我在我的应用程序中调用此函数并使用 node-theseus 调试器时,我看到第 8 行的函数触发 (.then( function ( data ) { ...)。

但是当我使用调试器运行 Mocha 时,我看到该函数或任何其他函数都不会触发。我只在第 4 行和第 5 行看到调用触发。测试是使用与我在应用前端使用的 token 参数完全相同的 LONG-STRING 完成的。

为什么 Mocha 和 node 看到我的应用程序的方式会有所不同,我如何才能使这个测试工作?

【问题讨论】:

  • 将超时设置为this.timeout(999999);
  • @hbk35 问题是应用程序没有运行,所以它无法执行任何 Mongoose 命令。请参阅下面的答案。

标签: javascript node.js unit-testing mocha.js chai


【解决方案1】:

问题是应用程序实际上并没有运行,我需要像app = require( '../server.js' ) 一样启动它。

【讨论】:

    猜你喜欢
    • 2016-10-05
    • 2015-06-02
    • 1970-01-01
    • 1970-01-01
    • 2015-11-23
    • 2014-07-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多