I want to use jest for my server unit testing (instead of mocha+chai). Is there a way I can run async function before all tests start (init purposes) only once and not for every test file? And also if there's a way of running something after all tests are done?
可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试):
问题:
回答1:
This feature was added in Jest's 22 version, with globalSetup
and globalTeardown
configurations.
Look at this for examples.
回答2:
Jest provides beforeAll
and afterAll
. As with test
/it
it will wait for a promise to resolve, if the function returns a promise.
beforeAll(() => {
return new Promise(resolve => {
// Asynchronous task
// ...
resolve();
});
});
It also supports callback style, if you have some existing test code that uses callbacks, although it's recommended to use promises.
beforeAll(done => {
// Asynchronous task
// ...
done();
});
回答3:
If you execute jest tests with npm you can run any node command or any executable before executing other command
"scripts": {
"test": "node setup.js && jest"
}
so now you can run this with command
$ npm t
回答4:
jest provides option for both global setup and teardown in new versions. You can create files for both setup and teardown exporting an async function and provide that path in jest configurarion like this.
"globalSetup": "setup-file-path",
"globalTeardown": "tear-down-file-path"