использование setupFiles для запуска асинхронного кода - PullRequest
0 голосов
/ 16 января 2019

Как я могу запустить файлы в массиве setupFiles, чтобы сначала завершить их до загрузки и выполнения тестов, и как я могу перебирать значения из кода setupFiles при тестировании.

Данные из кода setupFiles присваиваются глобальному объекту, и происходят две вещи. 1. Набор тестов запускается мгновенно с кодом setupFiles. 2. Значения недоступны в тестовом коде, потому что они не определены, но если я вложу их в другой блок описания, они станут доступными, но я все равно не смогу просмотреть их, чтобы выполнить тест.

Я попытался настроить значения через настройку и отключение beforeAll и добавленных таймеров.

index.js

(async () => {
 const events = [
    'dialog',
    'request',
    'response'
]
const browser = await puppeteer.launch({ headless: false })
const page = await browser.newPage()
events.forEach(event =>{
  page.on(event, async(eventType) =>{
      if(event === 'dialog') {
          return eventType.accept()
      }
      else if(event === 'response') {
          if(eventType.url().includes('trending')) {
              let data = await eventType.json().then(res => res).catch(e => console.error(e.message))
              global.data = data
          }
      }
      else {
        console.log('ಠ_ಠ ¯\_(ツ)_/¯ Nothing To See here ¯\_(ツ)_/¯ಠ_ಠ')
    }
  })
})
await page.setViewport({ width: 1280, height: 1307 })
await page.goto('https://www.giphy.com/')
await browser.close()

})()

workflow.test.js

describe('giphy', () =>{
beforeAll(async() =>{
    console.log(global.data)
})
global.data.forEach(element =>{
    it('wants to show up', async() =>{
        await expect(element).toHaveProperty('title')
    })
 })
})

package.json

"jest": {
"verbose": true,
"setupFiles": ["<rootDir>/index.js"]
},

Я ожидаю, что файлы setupFiles будут работать асинхронно, и значения будут доступны для повторения.

1 Ответ

0 голосов
/ 18 января 2019

Jest не поддерживает этот тип рабочего процесса, я выполнил это, запустив код до Jest и подготовив нужные мне данные в файле, используя fs.writeStream ().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...