量角器5.1.1- Chai断言失败导致进程退出并显示错误代码:199。之后没有报告生成

时间:2017-04-04 00:59:25

标签: protractor chai cucumberjs

黄瓜框架。当chai断言失败时,进程退出时出现错误代码:199。之后不会生成任何报告。

量角器 - 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

非常感谢任何帮助。提前谢谢。

1 个答案:

答案 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:如果是承诺,您是否也使用了chaichai-as-promised

3:如果您使用的是callback,那么您应该通知'完成方案的黄瓜,您可以使用expect('foo').to.equal('bar').and.notify(next);

执行此操作

4:查询失败时您没有承诺/回调,请参阅第一点的Promise.reject('message')

希望这会为您提供调试问题的一些信息。