【问题标题】:Use promise to delay mocha使用 promise 延迟 mocha
【发布时间】:2017-08-01 21:16:40
【问题描述】:

我正在使用mochazombie
我的目标是从网站<a> 标签加载数据,然后查询名称和href。到目前为止,这是有效的:

const Browser = require('zombie')

const browser = new Browser()

browser.visit('page', () => {
  let temp = browser.document.querySelectorAll('a selector')
  for (let i = 0; i < temp.length; i++) {
      browsers.push({ name: temp[i].innerHTML, url: temp[i].href })
  }
  delete temp
})

我的下一步是在测试中使用这些数据。

const data = [{ name: 'name', url: 'test' }]
describe('test with for', () => {
    for (let i = 0; i < data.length; i++) {
        it(data[i].name, () => {
            // test code with url of data[i]
        })
    }
})

我唯一的问题是 data 数组是异步填充的,并且它必须在调用 it 函数时存在。

我尝试使用before,但我发现它在这里没有意义(因为调用异步函数不会停止代码执行,只有传入的函数可以依赖于异步数据) 所以我尝试使用Promise 执行此操作,但也失败了。

const data = []
new Promise((resolve, reject) => {
    // filing data
    resolve()
}).then(() => {
    describe('...', () => {
        for (let i = 0; i < data.length; i++) {
          it (data[i].name, () => {})
        }
    })
})

我查看了 mocha 文档并没有找到解决方案:/
我该如何解决这个问题?

【问题讨论】:

    标签: javascript unit-testing asynchronous mocha.js zombie.js


    【解决方案1】:

    好的,我找到了解决方案,问题是我的错误,我忘记删除描述,因为我的浏览器阅读被包含,这就是 --delay 不起作用的原因。

    运行代码:

    const { describe, it } = require('mocha')
    const { assert, expect } = chai = require('chai')
    const Browser = require('zombie')
    
    const browser = new Browser()
    const browsers = []
    
    new Promise((resolve, reject) => {
        browser.visit('site', () => {
            let temp = browser.document.querySelectorAll('selector')
            for (let i = 0; i < temp.length; i++) {
                browsers.push({ name: temp[i].innerHTML, url: temp[i].href })
            }
            delete temp
            resolve()
        })
    }).then(() => {
        describe('Get browser name', () => {
            for (let i = 0; i < browsers.length; i++) {
              it(browsers[i].name, () => {
    
              })
            }
        })
        run()
    })
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-08
      • 1970-01-01
      相关资源
      最近更新 更多