Mocha测试MongoDB:在多次测试中出现未捕获的TypeError
Mocha test MongoDB: Uncaught TypeError in multiple test
我写了一个测试,但它总是产生Uncaught TypeError。我可以分别进行这两项测试。但当我同时运行两个测试时,就会出现问题。为了重用连接,我编写了一个文件来连接Mongodb
database.js
var MongoClient = require('mongodb').MongoClient;
var appDb = null;
var url = 'mongodb://localhost:27017/theDB'
exports.connectToServer = function(callback) {
MongoClient.connect(url, function(err, db) {
if(err) console.log(err);
appDb = db;
callback();
});
};
exports.getDb = function() {
if(typeof appDb !== 'undefined') {
return appDb;
}
};
然后在同一目录中有两个测试,/test但当我通过捆绑摩卡来测试摩卡时,test1运行良好,但test2不会运行。上面写着:
1) Project test suite 'before all' hook:
Uncaught TypeError: undefined is not a function
test1.js
var appDb = require('./database');
var Q = require('q');
var EnquiryForm = require('../EnquiryForm');
var EnquiryFormReset = require('../EnquiryFormReset');
var should = require('should');
describe('EnquiryForm', function() {
before(function(done) {
appDb.connectToServer(done);
});
describe('.getValue(key)', function() {
it('should get Key', function() {
// test using promise;
})
});
after(function() {
var reset = new EnquiryFormReset();
reset.reset();
});
});
test2.js
var appDb = require('../database');
var Q = require('q');
var Project = require('../routes/models/Project');
var Clear = require('./MongoScripts/Clear');
var should = require('should');
describe('Project test suite', function() {
before('project before', function(done) {
appDb.connectToServer(done);
});
describe('.createProject(project), .getProjectById(id)', function() {
it('can use the createProject to create and getProjectById to find by id.', function() {
// another test
})
});
after('project after', function() {
var clear = new Clear();
clear.clear();
});
});
我不知道如何像你一样正确地编写测试,但我是这样写的:
test1.js
var appDb = require('./database');
var Q = require('q');
var EnquiryForm = require('../EnquiryForm');
var EnquiryFormReset = require('../EnquiryFormReset');
var should = require('should');
require("mocha-as-promised")(); //important
suite('EnquiryForm')
before(function(done) {
appDb.connectToServer(done);
});
test('should get Key', function() {
// test using promise;
})
after(function() {
var reset = new EnquiryFormReset();
reset.reset();
});
test2.js
var appDb = require('../database');
var Q = require('q');
var Project = require('../routes/models/Project');
var Clear = require('./MongoScripts/Clear');
var should = require('should');
suite('Project test suite');
before('project before', function(done) {
appDb.connectToServer(done);
});
test('can use the createProject to create and getProjectById to find by id.', function(done) {
// another test
})
after('project after', function() {
var clear = new Clear();
clear.clear();
});
你可以试试,我希望这能帮助你
我还没有运行您的代码,所以不能确定,但问题似乎出在test2.js 中的require语句上
var appDb = require('../database');
您正在查找/database一个文件夹级别过高,因此test2.js中的appDb
被设置为undefined
,这不是一个函数,正如mocha在before()
中尝试调用它时告诉您的那样。
相关文章:
- 模糊事件的Javascript测试
- 我的单元测试选项是什么
- 测试索引值是否等于某个数字的倍数
- 得到"TypeError:对象不是函数“”;在forEach循环中使用超级测试/超级代理时
- Mocha测试MongoDB:在多次测试中出现未捕获的TypeError
- TypeError:无法读取属性'那么'在使用Karma测试AngularJS控制器时未定义的
- 在测试指令时,我得到typeerror编译不是一个函数
- React TypeError this_测试不是一个函数
- 使用Mocha测试Promise时出错'TypeError: Cannot read property '
- Karma/Jasmine测试失败的原因是:TypeError: MysmartdevicesCtrl未定义
- 单元测试返回“TypeError: undefined不是一个函数”
- 用Jasmine在CoffeeScript中测试Backbone.js的TypeError
- "TypeError:obj.indexOf不是函数“”;编写selenium测试脚本时出错
- 在用Chai进行单元测试时,为什么会出现& TypeError: Cannot read property 'a
- Karma没有找到我的茉莉花测试,TypeError
- "TypeError:无法调用方法'投掷'未定义的“;单元内测试
- Aurelia.测试.TypeError:config.addPipelineStep不是函数
- 使用angular mocks/jasmine测试服务-TypeError:undefined不是对象
- 尚未使用Capybara、PhantomJS测试创建DOM对象(TypeError:undefined)
- 使用typescript和angular 2的Karma测试会为“system .config”抛出Typeerror