我正在编写 Cucumber 测试并期望来自该函数 getOutout 的值 true
并使用返回值执行断言,但我收到以下错误:
错误信息:
AssertionError [ERR_ASSERTION]: undefined == true
at processTicksAndRejections (node:internal/process/task_queues:96:5) {
generatedMessage: true,
code: 'ERR_ASSERTION',
actual: undefined,
expected: true,
operator: '==',
[Symbol(originalCallSite)]: [ CallSite {}, CallSite {} ],
[Symbol(mutatedCallSite)]: [ CallSite {}, CallSite {} ]
step.js
const { Given, When, Then } = require('@cucumber/cucumber');
const AWS = require('aws-sdk');
const assert = require('assert');
let isSuccess;
Then('validate the {string} product', function (productType) {
var params = {
stateMachineArn: 'arn:aws:states:us-west-1:121:stateMachine:test',
maxResults: '25',
nextToken: null,
statusFilter: 'SUCCEEDED'
};
const result = getOutout(params).then(function() {
assert.equal(result, true);
})
});
async function getOutout(params) {
const stepfunctions = new AWS.StepFunctions({
region: process.env.AWS_REGION
});
try {
isSuccess = await listExecute(params, stepfunctions);
console.log(isSuccess, 'Output')
} catch (e) {
console.log(e)
}
}
const listExecute = function (params, stepfunctions) {
return new Promise((resolve, reject) => {
stepfunctions.listExecutions(params, function (err, data) {
if (err) reject(err);
else
data.executions.forEach(function (result) {
let params = {
executionArn: result.executionArn
};
stepfunctions.describeExecution(params, function (err, data) {
if (err) reject(err);
else {
resolve(true)
}
});
});
});
})
}
如果有任何帮助可以解决问题,我们将不胜感激。提前致谢!
答案 0 :(得分:0)
不知道你为什么这样做,但这是糟糕的异步代码
const result = getOutout(params).then(function() {
})
assert.equal(result, true);
您需要将断言放在承诺回调中:
getOutout(params).then(function(result) {
assert.equal(result, true);
})