所以我有一个测试套件设置来运行我的代码。当一切都应该通过时却失败了。即使尝试正确完成并通过测试,问题仍然存在。该代码仍然运行catch块。我的想法是,Im在处理运行的异步函数时缺少了一些东西,但它由于某种原因没有完全结束。
我尝试遍历一些调用并添加了done(),希望能够解决它,但没有运气。我试图避开承诺,因为在事情变得有些棘手的情况下,如果没有一些很好的知识,它们可能会变得很乱,并且对于这个项目,我建议使用异步不承诺,因为它更简单,并且只是为下一组准备完成坚实的基础。
connectToTable: async function (client) {
client = client || new Client({
user: "my_user",
host: "postgres",
database: "my_database",
password: "password123",
port: 5432,
max: 20,
idleTimeoutMillis: 30000,
connectionTimeoutMillis: 2000,
});
try {
let resp = await client.connect()
await expect(resp).to.not.contain('Error');
done()
return resp;
}
catch {
console.error("didnt connect")
}
},
executeQueryOnDatabase: async function (client, col, query) {
//client.connect()
//checks to verify that the columns of alphatwo match the array created with expected order and columns
try {
let resp = await client.query(query)
for (let respCol of resp) {
console.log(JSON.stringify(col))
await expect(JSON.stringify(col)).to.contain(respCol); // this will turn the specified col list to string and then
// check if that string contains what was was found in db
}
}
catch {
console.error("failed")
}
},
实际结果
@摩卡/ literate-app
test_1 | >摩卡咖啡-报告者规格 ./test/test/code/postGresFactoryTable.test.js
test_1 |
test_1 |
test_1 |
test_1 | PostGres表
test_1 |在各种情况下都不应连接到数据库
test_1 | 1)如果用户名或密码为 不正确
test_1 |检查数据库中是否存在alphatwo
test_1 |没有连接
test_1 | ✓如果我们连接并且表alphatwo存在,则应该通过
test_1 | ✓应该很好地与数据库断开连接
test_1 |检查alphatwo是否正确构建
test_1 |没有连接
test_1 | ✓如果我们连接并且表alphatwo存在,则应该通过
test_1 |失败
test_1 | ✓如果alphatwo正确构建,则应该通过
test_1 | ✓应该与数据库断开连接
test_1 |检查数据库中是否存在alpharead
test_1 |没有连接
test_1 | ✓如果我们连接并且表alpharead存在,则应该通过
test_1 | ✓应该与数据库断开连接
test_1 |检查alpharead是否正确构建
test_1 | ✓如果我们连接并且表alpharead存在,则应该通过
test_1 |没有连接
test_1 |失败
test_1 | ✓如果正确构建了alpharead,则应该通过
test_1 | ✓应该与数据库断开连接
test_1 |
test_1 |
test_1 | 10次通过(2s)
test_1 | 1个失败
test_1 |
test_1 | 1)PostGres表格
test_1 |在各种情况下都不应连接到数据库
test_1 |如果用户名或密码为 错误:
test_1 |错误:超时超过2000毫秒。对于异步测试和 钩子,确保调用了“ done()”;如果返回承诺,请确保其解决。 (/literate-app/test/test/code/postGresFactoryTable.test.js)
test_1 |在listOnTimeout(internal / timers.js:535:17)
test_1 |在processTimers上(internal / timers.js:479:7)
test_1 |
test_1 |
test_1 |
test_1 |应在错误失败时登录数据库
test_1 |没有连接
test_1 | npm ERR!代码ELIFECYCLE
test_1 | npm ERR! errno 1
test_1 | npm ERR! @摩卡:mocha --reporter spec
./test/test/code/postGresFactoryTable.test.js
test_1 | npm ERR!退出状态1
test_1 | npm错误!
test_1 | npm ERR! @ mocha脚本失败。
test_1 | npm ERR! npm可能不是问题。有 上面可能还有其他日志记录输出。
test_1 |
预期结果将是相同的,但是它只会打印一次“ didnt connect”,而永远不会打印“失败”
我们非常感谢您的帮助,但我似乎找不到其他地方发生的情况
一些信息是这正在通过docker-compose运行,尽管我怀疑这会引起任何问题。
我希望第一个测试失败,因为我还没有找到一种方法来允许它通过某些条件以通过相同的功能而失败。我可以创建一个旨在失败的函数,但我认为那不是处理它的最佳方法