如何让茉莉花等待一个承诺被解决或拒绝?

Kly*_*ner 3 testing promise jasmine angular

我有一个特定的功能,我正在尝试使用 Angular 进行测试。此函数返回一个承诺。虽然在我的测试中我对 promise 结果设定了期望,但 Jasmine 不会等待 promise 被解决或拒绝。

警告:

错误:“规范‘测试’没有预期。”

测试函数定义如下:

public validate(file: File): Promise<any[]> {
    return new Promise((resolve, reject) => {
      // Code
    }
}
Run Code Online (Sandbox Code Playgroud)

测试代码:

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();
        }
      );
    })
  );
Run Code Online (Sandbox Code Playgroud)

如何让 Jasmine 在测试期间等待验证承诺被解决/拒绝?当我让测试因预期未发生的事情而失败时,它实际上会在afterAll.

umi*_*der 5

正如在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));
    );
});
Run Code Online (Sandbox Code Playgroud)