Правильный способ сделать асинхронные вызовы, чтобы получить тестовые данные из конечных точек REST внутри транспортира?

DebuggerDisplay полезен. Я бы добавил единицы измерений «{m_value} C», чтобы вы могли сразу увидеть тип.

В зависимости от использования цели вы также можете иметь общую структуру преобразования в / из базовых блоков в дополнение к конкретному классы. То есть хранить значения в единицах СИ, но иметь возможность отображать / редактировать на основе культуры (градусы C, км, кг) против (градусов F, mi, lb).

Вы также можете проверить измерение F # единицы для additioanl идей ( http://msdn.microsoft.com/en-us/library/dd233243.aspx ) - обратите внимание, что это компиляция времени.

0
задан Honey Thakuria 18 January 2019 в 07:53
поделиться

1 ответ

Это может быть. Обратный вызов done() сообщает Jasmine, что вы выполняете асинхронную задачу; Тем не менее, вы должны быть осторожны, чтобы поймать ошибки.

Добавление в done.fail

import axios from "axios";

describe("Some test for ", () => {

  beforeEach(function(done) {
    axios
      .get(
       "******************"
      )
      .then(response => {
        data_file = response.data;
        done();
      })
      // if the above fails to .get, then we should catch here and fail with a message
      .catch(error => {
        done.fail('axios.get failed to execute');
      });
  });

Лучший подход. Использование async / await

В вашей конфигурации Protractor вам нужно будет добавить SELENIUM_PROMISE_MANAGER: false для включения async / await. Теперь вам потребуется дождаться всех обещаний.

import axios from "axios";

describe("Some test for ", () => {

  beforeEach(async () => {
    try {
      const data_file = await axios.get("******************").data;
    } catch (e) {
      console.error('axios.get failed to execute');
      throw e;  // throwing errors should fail the spec.
    }
  });

  it("some spec ", async () => {
    // .getText returns a Promise<string> so you'll need to await it
    // to get the string value.
    expect(await $('#someId').getText()).toBe(data_file.someData);
  });  
});
0
ответ дан cnishina 18 January 2019 в 07:53
поделиться
Другие вопросы по тегам:

Похожие вопросы: