gpt4 book ai didi

javascript - 我如何检查(断言)Ember Promise是否已解决?

转载 作者:行者123 更新时间:2023-12-01 16:10:59 25 4
gpt4 key购买 nike

由于我正在测试一种服务方法,因此我返回了一个Ember Promise。我正在使用Ember 2.16和qunit。

let promise = service.myFunctionBeingTested();
promise.then((resolveParam) => {
assert.equal(resolveParam, EXPECTED_VAL);
}).catch(() => {
assert.notOk("Promise rejected");
}

// Code here is supposed to trigger resolution of promise...

// Code here to make sure the promise is resolved and assert is run

我可以使用什么(应解决 promise 后)来确保已将 promise 解析为并运行了 assert.equal(resolveParam, EXPECTED_VAL);

看起来应该很容易就能检查到 promise 是否已兑现,但是Ember关于rsvp promise 的文档要么太难导航,要么不存在😊我可以使用 assert.expect(/* COUNT */),但是将来用户每次添加新的断言时都必须更新此数字我想避免。

最佳答案

在测试开始时,使用assert.expect(1)告诉测试您所期望的确切值为1。那你应该很好。如果 promise 失败,您的notOk将被调用,测试将失败。如果 promise 得以解决,则测试将通过。

如果这不是验收测试,则可能需要:

import wait from 'ember-test-helpers/wait'

然后从测试中返回等待调用,以确保测试在确认是否有正确的断言数量之前等待了您的 promise :
 return wait()

更新

没有 assert.expect的另一种方法是在像这样声明一个变量:
let successCalled = false

然后在成功块中
promise.then((resolveParam) => {
successCalled = true
})

然后,执行以下操作:
return wait().then(() => {
assert.ok(successCalled)
})

虽然, assert.expect为此存在,所以我建议使用它。

关于javascript - 我如何检查(断言)Ember Promise是否已解决?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50652045/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com