0

我正在尝试为我正在从事的一个项目编写一些基本的单元测试作为学习经验,并且遇到了让我难过的事情。

基本上,我可以在独立节点应用程序中运行下面的代码,代码创建新数据库并按预期插入记录。如果我随后使用相同的代码并在节点的 mocha 测试中运行它,我会看到 mongod 报告了一个新连接,但没有创建数据库,也没有插入记录(并且没有报告错误)。

任何想法发生了什么(猫鼬代码直接从猫鼬网站提取)。

独立节点应用程序 (server.js)

var mg = require( 'mongoose' );

mg.connect( 'mongodb://localhost/cat_test' );

var Cat = mg.model( 'Cat', { name: String } );
var kitty = new Cat({ name: 'Zildjian' });
kitty.save( function( err ){
    if ( err ){
        console.log( err );
    }
    process.exit();
});

摩卡测试 (test.js)

describe( 'Saving models', function(){
    it( 'Should allow models to be saved to the database', function(){
        var mg = require( 'mongoose' );

        mg.connect( 'mongodb://localhost/cat_test' );

        var Cat = mg.model( 'Cat', { name: String } );
        var kitty = new Cat({ name: 'Zildjian' });
        kitty.save( function( err ){
            if ( err ){
                console.log( err );
            }
            done();
        });
    });
});

想法?我猜这是我忽略的非常明显的事情,但我很难过。

4

1 回答 1

3

我想到了 -

我需要将 done 参数添加到 it 调用中-

摩卡测试 - 修订

// The parameter below was left off before, which caused the test to run without
// waiting for results.
describe( 'Saving models', function( done ){
    it( 'Should allow models to be saved to the database', function(){
        var mg = require( 'mongoose' );

        mg.connect( 'mongodb://localhost/cat_test' );

        var Cat = mg.model( 'Cat', { name: String } );
        var kitty = new Cat({ name: 'Zildjian' });
        kitty.save( function( err ){
            if ( err ){
                console.log( err );
            }
            done();
        });
    });
});
于 2013-06-25T00:54:03.560 回答