我怎样才能让 Jasmine 等待一个 promise 被 resolved 或 rejected?
How can I let Jasmine wait for a promise to be resolved or rejected?
我有一个特定的功能,我正在尝试使用 Angular 进行测试。这个函数returns 一个promise。尽管在我的测试中我对 promise 结果设定了期望,但 Jasmine 不会等待 promise 被解决或拒绝。
警告:
ERROR: 'Spec 'test' has no expectations.'
测试的函数定义如下:
public validate(file: File): Promise<any[]> {
return new Promise((resolve, reject) => {
// Code
}
}
测试代码:
it(
test.description,
fakeAsync(() => {
// Doesnt wait for the following promise result:
importValidator.validate(test.testFile).then(
resolveValue => {
expect(Array.isArray(resolveValue)).toBe(true);
},
onReject => {
expect(test.resolve).toBeFalsy();
}
);
})
);
如何让 Jasmine 在测试期间等待验证承诺成为 resolved/rejected?当我让测试因预期未发生的事情而失败时,它实际上会在 afterAll
.
中引发错误
如 https://jasmine.github.io/tutorials/async 所述,存在使用 Jasmine 测试异步代码的不同方法。
一种可能的方法是使用 done
函数。
it('#validate should return array', (done) => {
importValidator.validate(test.testFile)
.then(resolveValue => {
expect(Array.isArray(resolveValue)).toBe(true);
done();
})
.catch(err => fail(err));
);
});
我有一个特定的功能,我正在尝试使用 Angular 进行测试。这个函数returns 一个promise。尽管在我的测试中我对 promise 结果设定了期望,但 Jasmine 不会等待 promise 被解决或拒绝。
警告:
ERROR: 'Spec 'test' has no expectations.'
测试的函数定义如下:
public validate(file: File): Promise<any[]> {
return new Promise((resolve, reject) => {
// Code
}
}
测试代码:
it(
test.description,
fakeAsync(() => {
// Doesnt wait for the following promise result:
importValidator.validate(test.testFile).then(
resolveValue => {
expect(Array.isArray(resolveValue)).toBe(true);
},
onReject => {
expect(test.resolve).toBeFalsy();
}
);
})
);
如何让 Jasmine 在测试期间等待验证承诺成为 resolved/rejected?当我让测试因预期未发生的事情而失败时,它实际上会在 afterAll
.
如 https://jasmine.github.io/tutorials/async 所述,存在使用 Jasmine 测试异步代码的不同方法。
一种可能的方法是使用 done
函数。
it('#validate should return array', (done) => {
importValidator.validate(test.testFile)
.then(resolveValue => {
expect(Array.isArray(resolveValue)).toBe(true);
done();
})
.catch(err => fail(err));
);
});