javascript - 字符串对象和 Promise 之间的深度相等javascript中的对象
问题描述
使用深度相等来检查已实现的 Promise 和字符串的相等性是否不正确?如果这是不正确的,那么检查这些值是否相等的正确方法是什么?
解决方案
你不能比较 promise 和 string,它们是具有不同值的不同对象。您必须比较已解决的承诺。
您可以使用chais 作为承诺以这种方式执行此操作:
it('Test', () => {
return returnPromise().should.eventually.equal(your_string)
})
我已经创建了这个完整的示例,您可以检查结果:
it('Test ok', () => {
return returnPromise().should.eventually.equal("hi!")
})
it('Test nok', () => {
return returnPromise().should.eventually.equal("no hi!")
})
function returnPromise() {
return new Promise(async (resolve, reject) => {
resolve("hi!");
})
}
在这里,返回promise
带有文本hi!
的 a。如果期望值相同,则只有测试才会通过。所以输出是:
AssertionError: expected 'hi!' to equal 'no hi!'
+ expected - actual
-hi!
+no hi!
第一次测试没问题,但第二次失败。您可以看到如何在字符串之间进行比较,而不是在 Promise 和字符串之间进行比较。
推荐阅读
- python - Python numpy 模拟奇怪地不起作用
- java - 我在邮递员控制台上不断收到“错误:连接 ECONNREFUSED 192.168.0.29:8080”,而我试图在 sts4 上发出获取请求
- arcgis - ArcFM 解决方案文件夹中缺少 DotNet 程序集
- python - 在 Python-docx 中格式化
- excel - 如何使用VBA填充公式,但使公式浮动?
- python - 如果 re 模块中有子字符串,如何提取所有原始化合物?
- java - javax.mail.MessagingException:无法连接到 SMTP 主机:
,端口:25,响应:421 - spring-boot - 在 Kubernetes 上使用 spring-session-hazelcast 和 service-dns 导致 SplitBrainMergeValidationOp 错误
- outlook - UIPATH - 发送 Outlook 邮件(无法投射 COM 对象)
- flutter - Dart/Flutter 小部件,带有可选参数,但至少需要一个