在javascript中,字符串对象和Promise对象之间的深度相等<string>



使用深度相等来检查已实现的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!");
})
}

返回文本为hi!promise。只有当期望值相同时,测试才会通过。所以输出是:

AssertionError: expected 'hi!' to equal 'no hi!'
+ expected - actual
-hi!
+no hi!

第一次测试正常,但第二次测试失败。您可以看到如何在字符串之间进行比较,而不是在promise和字符串之间进行比较。

相关内容

最新更新