Ошибка машинописного текста: аргумент типа 'number' не присваивается параметру типа «Ожидаемый <Promise <number >>»


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);
    });
});

В качестве альтернативы ответу @Nitzan Tomer вы должны иметь возможность использовать async / wait (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);
});

(в качестве дополнительной заметки я считаю, что вам нужна довольно недавняя версия Mocha для правильной обработки обещаний)


0

Я бы сказал, чтобы использовать async и ждать обработки объекта обещания с минимальными изменениями кода.

// no changes to page.po.ts. handle async and await in .spec.ts file
import {browser, by, element} from 'protractor';

export class HomePage {

  navigateTo() {
    return browser.get('/');
  }

  getParagraphText() {
    return element(by.css('cfs-root h1')).getText();
  }

}

//page.e2e-spec.ts
import {HomePage} from './home.po';

describe('ng-app App', () => {
  let page: HomePage;

  beforeEach(() => {
    page = new HomePage();
  });

  it('should display the page heading.', async () => {   // notice the callback is a async function
    page.navigateTo();
    expect(await page.getParagraphText()).toBe('cfs works!');  //here we are using await to handle the promise
    page.getHomeSearchHeading().then((text) => {
      expect(text).toEqual('Universal Data Catalog');
    });
  });

});
JavaScript, машинопись, e2e-тестирование,

javascript,typescript,e2e-testing,

3

Ответов: 3


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);
    });
});

В качестве альтернативы ответу @Nitzan Tomer вы должны иметь возможность использовать async / wait (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);
});

(в качестве дополнительной заметки я считаю, что вам нужна довольно недавняя версия Mocha для правильной обработки обещаний)


0

Я бы сказал, чтобы использовать async и ждать обработки объекта обещания с минимальными изменениями кода.

// no changes to page.po.ts. handle async and await in .spec.ts file
import {browser, by, element} from 'protractor';

export class HomePage {

  navigateTo() {
    return browser.get('/');
  }

  getParagraphText() {
    return element(by.css('cfs-root h1')).getText();
  }

}

//page.e2e-spec.ts
import {HomePage} from './home.po';

describe('ng-app App', () => {
  let page: HomePage;

  beforeEach(() => {
    page = new HomePage();
  });

  it('should display the page heading.', async () => {   // notice the callback is a async function
    page.navigateTo();
    expect(await page.getParagraphText()).toBe('cfs works!');  //here we are using await to handle the promise
    page.getHomeSearchHeading().then((text) => {
      expect(text).toEqual('Universal Data Catalog');
    });
  });

});
JavaScript, машинопись, e2e-тестирование,
Похожие вопросы