异步创建TestCafe的动态测试

时间:2018-12-20 11:05:17

标签: javascript asynchronous promise async-await testcafe

我正在TestCafe中创建测试。目标是用小黄瓜编写测试。我查看了一些将Cucumber和TestCafe集成在一起的GitHub存储库,但我尝试使用另一个角度。

我想使用小黄瓜解析器并跳过黄瓜。相反,我将创建自己的实现以运行测试步骤。但是目前,我一直在试图让TestCafe运行测试。

如果我是正确的话,问题是TestCafe正在运行我的测试文件,然后在任何地方都看不到任何固定装置或测试。这是正确的,因为Gherkin解析器正在使用流API(它使用单独的Go进程来解析功能文件)来传递数据,这意味着在我当前的代码中,当TestCafe退出时,Promise仍处于待处理状态。或者,如果我删除了end回调尚未发生的话。

我的分析正确吗?如果是,如何从流中获取所有数据并创建测试,以便TestCafe可以运行它?

gherkin_executor.js

var Gherkin = require('gherkin');

console.log('start')

const getParsedGherkin = new Promise((resolve, reject) => {
    let stream = Gherkin.fromPaths(['file.feature'])

    let data = []
    stream.on('data', (chunk) => {
        if(chunk.hasOwnProperty('source')){
            data.push({source: chunk.source, name: null, pickles: []})
        }
        else if (chunk.hasOwnProperty('gherkinDocument')){
            data[data.length-1].name = chunk.gherkinDocument.feature.name
        }
        else {
            data[data.length-1].pickles.push(chunk.pickle)
        }
    })
    stream.on('end', () => {
        resolve(data)
    })
})
let data = getParsedGherkin.then((data) => {return data})
console.log(data)

function createTests(data){
    for(let feature of data){
        fixture(feature.name)
        for(let testcase of feature.pickles){
            test(testcase.name, async t => {
                console.log('test')
            })
        }
    }
}

file.feature

Feature: A test feature

    Scenario: A test case
        Given some data
        When doing some action
        Then there is some result

1 个答案:

答案 0 :(得分:3)

好主意!

要更进一步,方法createTests必须在至少一个JavaScript或TypeScript文件中生成TestCafe代码。然后,您必须从这些文件启动TestCafe运行程序。

因此,现在,要进一步进行学习,必须编写TestCafe源代码生成器。

在TestCafe团队正式支持Cucumber之前,也许在GitHub上的hdorgeval/testcafe-starter回购是一种选择。