Это может быть. Обратный вызов 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
, чтобы включить асинхронное / ожидание. Теперь вам потребуется дождаться всех обещаний.
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);
});
});