打字稿错误:类型'number'的参数不能分配给'Expected <Promise <number >>'类型的参数

Car*_*ber 3 javascript typescript e2e-testing

我有以下功能执行失败:

it('should show three items', () => {
    const EXPECTED_NUMBER_OF_ITEMS: number = 3;
    const countOfTabElements: Promise<number> = page.listOfTabs.count();
    expect(countOfTabElements).toBe(EXPECTED_NUMBER_OF_ITEMS);
});
Run Code Online (Sandbox Code Playgroud)

它执行时抛出以下错误:

类型'number'的参数不能分配给'Expected>'类型的参数.(2345)

有什么想法吗?

Bru*_*der 7

作为@Nitzan Tomer的答案,您应该可以使用async/await(TS> = 2.1用于定位ES5)

it('should show three items', async () => {
    const EXPECTED_NUMBER_OF_ITEMS: number = 3;
    const value = await page.listOfTabs.count();
    expect(value).toBe(EXPECTED_NUMBER_OF_ITEMS);
});
Run Code Online (Sandbox Code Playgroud)

(作为旁注,我相信你需要一个相当新版本的Mocha来正确处理承诺拒绝)


Nit*_*mer 5

尝试:

it('should show three items', () => {
    const EXPECTED_NUMBER_OF_ITEMS: number = 3;
    page.listOfTabs.count().then(value => {
        expect(value).toBe(EXPECTED_NUMBER_OF_ITEMS);
    });
});
Run Code Online (Sandbox Code Playgroud)