Я использую асинхронную функцию для запуска сервера, проверьте, возвращает ли URL-адрес 200
, а затем запустите мои тесты, но моя функция checkUrl
не завершается до запуска следующей строки кода.
Я использую пакет axios
, чтобы пропинговать URL для кода состояния, и я пробовал несколько вариантов async / await и Promise.resolve()
.
function checkUrl(url) {
console.log(`Checking for ${url}`);
return axios
.get(url)
.then(function(res) {
const message = `${url} is status code: ${res.status}`;
return res;
})
.catch(function(err) {
console.log("Will check again in 5 seconds");
setTimeout(() => {
return checkUrl(url);
}, 5000);
});
}
async function init() {
let val;
console.log("Running tests:::");
// start server in react-integration directory
shell.exec("BROWSER=none yarn start", {
cwd: "sampleIntegration/react-integration",
async: true
});
// check server has started
val = await checkUrl("http://localhost:3000");
console.log(`value from checkUrl promise: ${val}`);
}
Яожидая, что переменная val будет сообщением, возвращаемым Promise.resolve()
в моей функции checkUrl
.
val
возвращается неопределенным.