2017-07-26 98 views
10

我想为我的服务器单元测试(而不是摩卡+ chai)使用jest。 有没有一种方法可以在所有测试开始(初始目的)只有一次而不是每个测试文件之前运行异步函数?而且,如果在完成所有测试后还有某种运行方式?Jest在所有测试之前运行异步函数一次

回答

3

如果用NPM可以执行其他命令

"scripts": { 
    "test": "node setup.js && jest" 
    } 

所以之前在任何节点命令或任何可执行文件执行开玩笑的测试,现在你也可以用命令

$ npm t 
+1

谢谢,但我一直在寻找Jest解决方案。就像摩卡允许你在全球范围内放置BeforeAll一样,我希望Jest有类似的东西。 – Roy

+0

虽然这个解决方案没问题,但这不会在'--watch'模式下运行。有没有任何Jest解决方案? – Wajahath

2

玩笑提供beforeAll并运行此afterAll。与test/it一样,如果函数返回承诺,它将等待承诺解决。

beforeAll(() => { 
    return new Promise(resolve => { 
    // Asynchronous task 
    // ... 
    resolve(); 
    }); 
}); 

它也支持回调风格,如果你有一些现有的测试代码使用回调,虽然它建议使用承诺。

beforeAll(done => { 
    // Asynchronous task 
    // ... 
    done(); 
}); 
+0

[Jest'beforeAll'](https://facebook.github.io/jest/docs/en/api.html#beforeallfn-timeout)听起来不错,尤其是re:Promises“如果函数返回一个promise或者是一个generator ,Jest在运行测试之前等待这个承诺解决。“茉莉花是否有相同的?它看起来像茉莉花不*支持承诺,但[*不支持'完成'回调方法?](https://jasmine.github.io/2.1/introduction.html#section-Asynchronous_Support)我特别使用量角器,但'完成'回调不适用于我[如此处所述](https://stackoverflow.com/a/34892316/1175496), –

相关问题