以优雅的方式等待测试中的承诺
你可以将 function 传递给 test() 方法 async - 然后你可以使用 await 关键字。你的测试将等到 Promise 解决并测试异步代码变得更容易和更易读。在下面的示例中,返回 Promise 的调用是 changeset.validate()。请注意在 Ember.run 中包装 set 调用。设置数量具有异步效果(观察者,计算属性),因此我们需要将其包装在 Ember.run 中。
test('quantity validation: greater than 0', async function (assert) {
assert.expect(3);
const model = this.subject({
quantity: 1
});
const changeset = createChangeset(model);
await changeset.validate();
assert.ok(!changeset.get('error.quantity'));
Ember.run(() => {
changeset.set('quantity', -1);
});
await changeset.validate();
assert.equal(changeset.get('error.quantity.validation.length'), 1);
assert.ok(!changeset.get('isValid'));
});