我正在使用Mocha来测试Sails应用程序。我有2个测试文件。两个测试文件都执行标准的Before / After Sails.lift和Sails.lower。
当我分别运行mocha test / TestDataEntry.js和mocha test / TestEventEntry时,它们会正确执行。如果我只运行mocha,test / TestDataEntry正确执行但test / TestEventEntry失败。似乎Sails服务器没有正常循环向上。任何处理此问题的建议将不胜感激。终端输出如下:
larry@larry-Aspire-M3985 ~/Projects/web-backend $ mocha
Data Entry testing:
sails lifted
✓ bad url
✓ bad device (91ms)
✓ expired token (61ms)
✓ bad packet: missing Data field (59ms)
✓ bad packet: Data is not an array (62ms)
✓ bad packet: Data is empty (60ms)
✓ bad packet: missing data field D2 (60ms)
✓ bad packet: missing data field D1 (62ms)
✓ bad packet: missing data field TS (61ms)
✓ bad packet: bad timestamp field (64ms)
✓ good packet (60ms)
sails down
Event Entry testing:
sails lifted
✓ bad url
1) bad device
double callback!
2) expired token
double callback!
3) bad packet: missing Data field
double callback!
4) bad packet: Data is not an array
double callback!
5) bad packet: Data is empty
double callback!
6) bad packet: missing data field ED
double callback!
7) bad packet: missing data field ET
double callback!
8) bad packet: missing data field TS
double callback!
9) bad packet: bad timestamp field
double callback!
10) good packet
double callback!
sails down
12 passing (2s)
10 failing
1)事件录入测试:坏设备: 未捕获的AssertionError:预期[错误:连接ECONNREFUSED]为空
2)事件录入测试:过期令牌: 未捕获的AssertionError:预期[错误:连接ECONNREFUSED]为空
3)事件输入测试:坏包:丢失数据字段: 未捕获的AssertionError:预期[错误:连接ECONNREFUSED]为空
4)事件输入测试:坏包:数据不是数组: 未捕获的AssertionError:预期[错误:连接ECONNREFUSED]为空
5)事件输入测试:坏包:数据为空: 未捕获的AssertionError:预期[错误:连接ECONNREFUSED]为空
6)事件输入测试:坏包:缺少数据字段ED: 未捕获的AssertionError:预期[错误:连接ECONNREFUSED]为空
7)事件输入测试:坏包:缺少数据字段ET: 未捕获的AssertionError:预期[错误:连接ECONNREFUSED]为空
8)事件输入测试:坏包:丢失数据字段TS: 未捕获的AssertionError:预期[错误:连接ECONNREFUSED]为空
9)事件录入测试:错误数据包:错误的时间戳字段: 未捕获的AssertionError:预期[错误:连接ECONNREFUSED]为空
10)事件录入测试:好的数据包: 未捕获的AssertionError:预期[错误:连接ECONNREFUSED]为空
以下是前/后代码:
before(function (done) {
// Lift Sails and start the server
Sails.lift({
log: {
level: 'error'
}
}, function (err, sails) {
console.log("sails lifted");
done();
});
});
after(function (done) {
console.log('sails down');
Sails.lower(done);
});
答案 0 :(得分:0)
好的,事实证明,有一个匿名父描述块是所有测试文件描述块的父代。因此,如果在匿名父级别引入了前/后挂钩,则它将所有测试文件作为一个组覆盖。
Mocha默认按字母顺序执行测试文件。所以我构建了一个测试文件'aaaa.js',它只包含Sails提升和降低之前/之后。这将在父级别引入前/后挂钩。
现在,'mocha'在test / *中执行所有测试文件没有问题。这种方法的唯一缺点是我不再在单个测试文件中使用前/后挂钩,因此必须使用:'mocha test / aaaa.js test / TestDataEntry.js'以确保正确提升和降低Sails。
答案 1 :(得分:0)
使用sails运行多个mocha测试的方法是为每个mocha测试生成一个新的sails实例
var SailsApp = require('sails').Sails;
describe('MochaTest',function() {
var sails = new SailsApp();
before(function(done) {
sails.lift({},
function(err,server) {
if(err) {
done(err);
} else {
done(err,sails);
}
});
});
after(function(done) {
sails.lower(done);
});
});