#javascript #async-await #jestjs
#javascript #async-ожидание #jestjs
Вопрос:
Кажется, я не могу заставить CLS работать с Jest.
Следующий код:
export {}
const { promises: fs } = require('fs')
describe('CLS tests', () => {
test('Can test CLS', async () => {
var createNamespace = require('cls-hooked').createNamespace
var session = createNamespace('session')
session.run(async function () {
await fs.readFile('package.json', 'utf-8')
console.log('I cant log this')
})
})
})
Приводит к следующей ошибке:
Не удается войти в систему после завершения тестов. Вы забыли дождаться чего-то асинхронного в вашем тесте? Попытался войти «Я не могу это зарегистрировать».
Почему мой тест, похоже, завершается раньше?
Ответ №1:
Возможно, вам нужно абстрагироваться от asynchronous
операций. Я попробовал это в своей системе, и это работает.
const {promises: fs} = require('fs')
const runSession = () => new Promise((resolve, reject) => {
const createNamespace = require('cls-hooked').createNamespace
const session = createNamespace('session')
session.run(() => {
fs.readFile('package.json', 'utf-8')
.then(resolve)
})
})
describe('CLS tests', () => {
test('Can test CLS', async () => {
const result = await runSession()
console.log('hello')
console.log(result)
expect(result).toBeTruthy()
console.log('after expect...')
})
})
Удачи…
Комментарии:
1. Приветствую @JamieAlexander 🙂 . Если это отвечает на ваш вопрос; пожалуйста
accept
, ответьте, нажав на галочку с левой стороны в верхней части ответа.