期望(...)。成为解决诺言还是需要等待它们?

时间:2018-11-23 04:18:39

标签: angular typescript protractor

量角器测试很难且令人困惑(至少对我而言)。

我有以下

`SomeTestFile.spec.ts`
describe('A test: ', () => {

    beforeEach(() => {
      ....
    }

    it ('Should validate a label', async() => {
      await helper.validateALabel(label);
    }   

    ....
}

然后在助手类中:

helper.ts
export class Helper {
  ....

  public validateLabel(label: String): Promise<void> {
    expect(label).toBe('This is the string of the label');
  }

  ....
}

所以问题是我需要等待expect(label).toBe(...)吗?

应该是

await expect(label).toBe(...)

这是否很好(如果可以,为什么我会不断收到“无承诺的拒绝”警告)?

expect(label).toBe(...)

3 个答案:

答案 0 :(得分:2)

您可以这样做:

CLIENT -> SERVER: EHLO www.absqc.abc
SMTP ERROR: EHLO command failed: CLIENT -> SERVER: HELO www.absqc.abc
SMTP ERROR: HELO command failed:.

来自https://jestjs.io/docs/en/expect#resolves

答案 1 :(得分:1)

在步骤定义中使用期望是一种很好的做法。您可以从helper类中解析值,并在步骤定义中进行一些声明,并使测试步骤通过或失败。

`SomeTestFile.spec.ts`
describe('A test: ', () => {

    beforeEach(() => {
      ....
    }

    it ('Should validate a label', async() => {
      await expect(helper.validateALabel(label)).toBe('This is the string of the label');
    }   

    ....
    }

helper.ts

export class Helper {
  ....
 function validateLabel(label) {
    return new Promise((resolve, reject) => {
        return resolve('This is the string of the label');
    })
 }

  ....
}

答案 2 :(得分:1)

不是。

您必须等待诺言并比较结果。

// example promise function
const validateALabel = (label) => new Promise(r => r(true))

it ('validates a label', async () => {
  const valid = await validateALabel(label)

  expect(valid).toBeTruthy()
})

在这种情况下,您似乎在这里定义了错误的返回类型:

public validateLabel(label: String): Promise<void> {
  expect(label).toBe('This is the string of the label');
}

这实际上不返回Promise<void>,而仅返回void,因此您根本不需要异步/等待

相关问题