量角器 - 5.1.1
这是我更新的代码,
this.Then(/^I should see process is saved in db$/, function (next) {
var sql = "select * from process where name = ?";
sql = mysql.format(sql, params.flow.procName);
console.log(sql);
dbConn.query(sql, function(err, rows, fields){
if(!err) {
procDbObj = rows;
var procName = procDbObj[0].name;
console.log(rows);
expect(procDbObj[0].name).to.equal(params.flow.procName);
expect(procDbObj[0].description).to.equal(params.flow.procDesc);
expect(procName).to.equal("AABBDCD").and.notify(next);
}
});
});
以下是断言失败时我看到的错误,
[11:23:59] E / launcher - 预计'Auto_proc_2h5c83'等于'AABBDCD' [11:23:59] E / launcher - AssertionError:预期'Auto_proc_2h5c83'等于'AABBDCD' 在Query._callback(C:\ Users \ panubrolu \ workspace \ ProtractorCucumber \ features \ step_definitions \ E2E_step_definition.js:64:34) 在Query.Sequence.end(C:\ Users \ panubrolu \ workspace \ ProtractorCucumber \ node_modules \ mysql \ lib \ protocol \ sequences \ Sequence.js:86:24) 在Query._handleFinalResultPacket(C:\ Users \ panubrolu \ workspace \ ProtractorCucumber \ node_modules \ mysql \ lib \ protocol \ sequences \ Query.js:137:8) 在Query.EofPacket(C:\ Users \ panubrolu \ workspace \ ProtractorCucumber \ node_modules \ mysql \ lib \ protocol \ sequences \ Query.js:121:8) 在Protocol._parsePacket(C:\ Users \ panubrolu \ workspace \ ProtractorCucumber \ node_modules \ mysql \ lib \ protocol \ Protocol.js:280:23) 在Parser.write(C:\ Users \ panubrolu \ workspace \ ProtractorCucumber \ node_modules \ mysql \ lib \ protocol \ Parser.js:75:12) 在Protocol.write(C:\ Users \ panubrolu \ workspace \ ProtractorCucumber \ node_modules \ mysql \ lib \ protocol \ Protocol.js:39:16) 在Socket。 (C:\ Users \用户panubrolu \工作空间\ ProtractorCucumber \ node_modules \ MySQL的\ lib中\ Connection.js:103:28) 在emitOne(events.js:96:13) 在Socket.emit(events.js:191:7)
[11:23:59] E / launcher - 已退出流程,错误代码为199
非常感谢任何帮助。提前谢谢。
答案 0 :(得分:0)
我认为您的代码中存在一些问题。
1: db-query是一个Promise吗?您正在使用Callback(next
)和Promises(' return')。如果它是Promise,那么代码应该是这样的
this.Then(/^I should see process is saved in db$/, function () {
var sql = "select * from process where name = ?";
sql = mysql.format(sql, params.flow.procName);
console.log(sql);
return dbConn.query(sql, function(err, rows, fields){
if(!err) {
procDbObj = rows;
var procName = procDbObj[0].name;
console.log(rows);
expect(procDbObj[0].name).to.eventually.equal(params.flow.procName);
expect(procDbObj[0].description).to.eventually.equal(params.flow.procDesc);
} else {
return Promise.reject('Query Failed, error = ' + err);
}
});
});
2:如果是承诺,您是否也使用了chai
和chai-as-promised
?
3:如果您使用的是callback
,那么您应该通知'完成方案的黄瓜,您可以使用expect('foo').to.equal('bar').and.notify(next);
4:查询失败时您没有承诺/回调,请参阅第一点的Promise.reject('message')
希望这会为您提供调试问题的一些信息。