摩卡挂钩前后不执行

我想在我的本地cassandra数据库上运行一个简单的testing来检查select语句是否从表中返回正确的logging数。 但是,放在前后块之间的代码并没有被调用。 结果我的testing简直失败了。

var assert = require('assert'); var cassandra = require('cassandra-driver'); var async = require('async'); //Connect to the cassandra cluster, assuming that the keyspace & columnspace already exists var client = new cassandra.Client({contactPoints: ['127.0.0.1'], keyspace: 'demo'}); describe('Cassandra is up and running', function() { before(function() { //Check if the connection got established successfuly client.connect(function(err) { if(err){ console.log("Oops, something went wrong : " + err); } console.log('I al here 1'); }); //Insert a few data to column space var queries = [ { query: 'INSERT INTO users(key, name, emails) VALUES (?, ?, ?)', params: ['mick-jagger1', 'Sir Mick Jagger 1', 'mick1@company.com'] }, { query: 'INSERT INTO users(key, name, emails) VALUES (?, ?, ?)', params: ['mick-jagger2', 'Sir Mick Jagger 2', 'mick2@company.com'] }, { query: 'INSERT INTO users(key, name, emails) VALUES (?, ?, ?)', params: ['mick-jagger3', 'Sir Mick Jagger 3', 'mick3@company.com'] }, { query: 'INSERT INTO users(key, name, emails) VALUES (?, ?, ?)', params: ['mick-jagger4', 'Sir Mick Jagger 4', 'mick4@company.com'] } ]; client.batch(queries, { prepare: true }, function(err) { if(err){ console.log("Oops, something went wrong : " + err); } console.log('Sample data inserted into column space'); }); }) it('should return 4 when four rows of data are inserted into demo table', function() { var count = 0; client.execute('SELECT COUNT(*) FROM users', function(err, result) { count = result.rows[0]; }); assert.equal(4, count); console.log("I am here : " + count); }) after(function() { client.execute('TRUNCATE users', function(err, result) { if(err){ console.log("Oops, something went wrong : " + err); } }); }) }) 

您的testing正在执行asynchronous操作。 当你的it / before / after函数完成时,你需要使用callback来告诉mocha。 例如:

 before(function(done) { // ... client.batch(queries, { prepare: true }, function(err) { if (err) { console.log("Oops, something went wrong : " + err); } console.log('Sample data inserted into column space'); done(); }); }); 

和:

 it('should return 4 when four rows of data are inserted into demo table', function(done) { var count = 0; client.execute('SELECT COUNT(*) FROM users', function(err, result) { count = result.rows[0]; assert.equal(4, count); console.log("I am here : " + count); done(); }); });