Jest async setup before each test file
I have to do an async setup before each test file in jest (specifically to start a MongoMemoryServer each time).
- Using
setupFiles
isn't working because does not handle async work. Passing a global Promise won't work because I have to set the db uri string before requiring my db module (I don't want to mock it after await a Promise, that's just bad). - The official guide uses
testEnvironment
and sets up the mongo server withglobalSetup
. Strangely enough the docs say
Note: TestEnvironment is sandboxed. Each test suite will trigger setup/teardown in their own TestEnvironment.
But that is not true, because setup and teardown are global.
Tests run concurrently, and I need to insert documents in beforeAll in each file and that causes write errors.
I am stunned by the fact that so many people use the Node/MongoDB/jest stack and yet I stumble upon so many problems.
Anyway, thank you!
javascript installation jestjs each
add a comment |
I have to do an async setup before each test file in jest (specifically to start a MongoMemoryServer each time).
- Using
setupFiles
isn't working because does not handle async work. Passing a global Promise won't work because I have to set the db uri string before requiring my db module (I don't want to mock it after await a Promise, that's just bad). - The official guide uses
testEnvironment
and sets up the mongo server withglobalSetup
. Strangely enough the docs say
Note: TestEnvironment is sandboxed. Each test suite will trigger setup/teardown in their own TestEnvironment.
But that is not true, because setup and teardown are global.
Tests run concurrently, and I need to insert documents in beforeAll in each file and that causes write errors.
I am stunned by the fact that so many people use the Node/MongoDB/jest stack and yet I stumble upon so many problems.
Anyway, thank you!
javascript installation jestjs each
"because setup and teardown are global" do you mean they run just once instead of running N times?
– skyboyer
Nov 13 '18 at 11:35
1
Yes, they run once
– RandomDev
Nov 13 '18 at 12:54
add a comment |
I have to do an async setup before each test file in jest (specifically to start a MongoMemoryServer each time).
- Using
setupFiles
isn't working because does not handle async work. Passing a global Promise won't work because I have to set the db uri string before requiring my db module (I don't want to mock it after await a Promise, that's just bad). - The official guide uses
testEnvironment
and sets up the mongo server withglobalSetup
. Strangely enough the docs say
Note: TestEnvironment is sandboxed. Each test suite will trigger setup/teardown in their own TestEnvironment.
But that is not true, because setup and teardown are global.
Tests run concurrently, and I need to insert documents in beforeAll in each file and that causes write errors.
I am stunned by the fact that so many people use the Node/MongoDB/jest stack and yet I stumble upon so many problems.
Anyway, thank you!
javascript installation jestjs each
I have to do an async setup before each test file in jest (specifically to start a MongoMemoryServer each time).
- Using
setupFiles
isn't working because does not handle async work. Passing a global Promise won't work because I have to set the db uri string before requiring my db module (I don't want to mock it after await a Promise, that's just bad). - The official guide uses
testEnvironment
and sets up the mongo server withglobalSetup
. Strangely enough the docs say
Note: TestEnvironment is sandboxed. Each test suite will trigger setup/teardown in their own TestEnvironment.
But that is not true, because setup and teardown are global.
Tests run concurrently, and I need to insert documents in beforeAll in each file and that causes write errors.
I am stunned by the fact that so many people use the Node/MongoDB/jest stack and yet I stumble upon so many problems.
Anyway, thank you!
javascript installation jestjs each
javascript installation jestjs each
edited Nov 13 '18 at 14:21
RandomDev
asked Nov 13 '18 at 11:24
RandomDevRandomDev
204
204
"because setup and teardown are global" do you mean they run just once instead of running N times?
– skyboyer
Nov 13 '18 at 11:35
1
Yes, they run once
– RandomDev
Nov 13 '18 at 12:54
add a comment |
"because setup and teardown are global" do you mean they run just once instead of running N times?
– skyboyer
Nov 13 '18 at 11:35
1
Yes, they run once
– RandomDev
Nov 13 '18 at 12:54
"because setup and teardown are global" do you mean they run just once instead of running N times?
– skyboyer
Nov 13 '18 at 11:35
"because setup and teardown are global" do you mean they run just once instead of running N times?
– skyboyer
Nov 13 '18 at 11:35
1
1
Yes, they run once
– RandomDev
Nov 13 '18 at 12:54
Yes, they run once
– RandomDev
Nov 13 '18 at 12:54
add a comment |
1 Answer
1
active
oldest
votes
You're confusing setup
/teardown
methods of TestEnvironment
(which will be executed before/after every test file) with globalSetup
/globalTeardown
of Jest runner (which will be executed before/after all tests).
add a comment |
Your Answer
StackExchange.ifUsing("editor", function ()
StackExchange.using("externalEditor", function ()
StackExchange.using("snippets", function ()
StackExchange.snippets.init();
);
);
, "code-snippets");
StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "1"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);
else
createEditor();
);
function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);
);
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53279992%2fjest-async-setup-before-each-test-file%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
You're confusing setup
/teardown
methods of TestEnvironment
(which will be executed before/after every test file) with globalSetup
/globalTeardown
of Jest runner (which will be executed before/after all tests).
add a comment |
You're confusing setup
/teardown
methods of TestEnvironment
(which will be executed before/after every test file) with globalSetup
/globalTeardown
of Jest runner (which will be executed before/after all tests).
add a comment |
You're confusing setup
/teardown
methods of TestEnvironment
(which will be executed before/after every test file) with globalSetup
/globalTeardown
of Jest runner (which will be executed before/after all tests).
You're confusing setup
/teardown
methods of TestEnvironment
(which will be executed before/after every test file) with globalSetup
/globalTeardown
of Jest runner (which will be executed before/after all tests).
answered Nov 16 '18 at 20:28
Michał PierzchałaMichał Pierzchała
579315
579315
add a comment |
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53279992%2fjest-async-setup-before-each-test-file%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
"because setup and teardown are global" do you mean they run just once instead of running N times?
– skyboyer
Nov 13 '18 at 11:35
1
Yes, they run once
– RandomDev
Nov 13 '18 at 12:54