Why doesn't Jest complete the async operation(s) in this Node test?










0















I have the following simple test setup:



test('what did I do to deserve this', async () => 
expect.assertions(1)

const data = await fetchData() // or fetchData2
expect(data).toBe('peanut butter')
)

async function fetchData ()
return "peanut butter"


async function fetchData2 ()
return knex.select('name').from('foos')



When I use fetchData jest finishes happily.

But when I use fetchData2 it complains of this:




Jest did not exit one second after the test run has completed.



This usually means that there are asynchronous operations that weren't
stopped in your tests. Consider running Jest with
--detectOpenHandles to troubleshoot this issue.




The data variable does have the result from the db query, and other callers higher in the API resolve the query fine and continue the execution of other statements.



I have tried:



  1. the --detectOpenHandles flag but it doesn't show me anything.

  2. making the expect pass for fetchData2 in case it was the issue described here

  3. passing a done arg to the async function in test. It does exist, but calling it does not fix the warning.

  4. throwing try/catch blocks at it

Thanks for any help on making this happy.



Versions of things:



  • Node v11.1.0

  • "jest": "^23.6.0"

  • "knex": "^0.15.2"









share|improve this question


























    0















    I have the following simple test setup:



    test('what did I do to deserve this', async () => 
    expect.assertions(1)

    const data = await fetchData() // or fetchData2
    expect(data).toBe('peanut butter')
    )

    async function fetchData ()
    return "peanut butter"


    async function fetchData2 ()
    return knex.select('name').from('foos')



    When I use fetchData jest finishes happily.

    But when I use fetchData2 it complains of this:




    Jest did not exit one second after the test run has completed.



    This usually means that there are asynchronous operations that weren't
    stopped in your tests. Consider running Jest with
    --detectOpenHandles to troubleshoot this issue.




    The data variable does have the result from the db query, and other callers higher in the API resolve the query fine and continue the execution of other statements.



    I have tried:



    1. the --detectOpenHandles flag but it doesn't show me anything.

    2. making the expect pass for fetchData2 in case it was the issue described here

    3. passing a done arg to the async function in test. It does exist, but calling it does not fix the warning.

    4. throwing try/catch blocks at it

    Thanks for any help on making this happy.



    Versions of things:



    • Node v11.1.0

    • "jest": "^23.6.0"

    • "knex": "^0.15.2"









    share|improve this question
























      0












      0








      0








      I have the following simple test setup:



      test('what did I do to deserve this', async () => 
      expect.assertions(1)

      const data = await fetchData() // or fetchData2
      expect(data).toBe('peanut butter')
      )

      async function fetchData ()
      return "peanut butter"


      async function fetchData2 ()
      return knex.select('name').from('foos')



      When I use fetchData jest finishes happily.

      But when I use fetchData2 it complains of this:




      Jest did not exit one second after the test run has completed.



      This usually means that there are asynchronous operations that weren't
      stopped in your tests. Consider running Jest with
      --detectOpenHandles to troubleshoot this issue.




      The data variable does have the result from the db query, and other callers higher in the API resolve the query fine and continue the execution of other statements.



      I have tried:



      1. the --detectOpenHandles flag but it doesn't show me anything.

      2. making the expect pass for fetchData2 in case it was the issue described here

      3. passing a done arg to the async function in test. It does exist, but calling it does not fix the warning.

      4. throwing try/catch blocks at it

      Thanks for any help on making this happy.



      Versions of things:



      • Node v11.1.0

      • "jest": "^23.6.0"

      • "knex": "^0.15.2"









      share|improve this question














      I have the following simple test setup:



      test('what did I do to deserve this', async () => 
      expect.assertions(1)

      const data = await fetchData() // or fetchData2
      expect(data).toBe('peanut butter')
      )

      async function fetchData ()
      return "peanut butter"


      async function fetchData2 ()
      return knex.select('name').from('foos')



      When I use fetchData jest finishes happily.

      But when I use fetchData2 it complains of this:




      Jest did not exit one second after the test run has completed.



      This usually means that there are asynchronous operations that weren't
      stopped in your tests. Consider running Jest with
      --detectOpenHandles to troubleshoot this issue.




      The data variable does have the result from the db query, and other callers higher in the API resolve the query fine and continue the execution of other statements.



      I have tried:



      1. the --detectOpenHandles flag but it doesn't show me anything.

      2. making the expect pass for fetchData2 in case it was the issue described here

      3. passing a done arg to the async function in test. It does exist, but calling it does not fix the warning.

      4. throwing try/catch blocks at it

      Thanks for any help on making this happy.



      Versions of things:



      • Node v11.1.0

      • "jest": "^23.6.0"

      • "knex": "^0.15.2"






      node.js jestjs knex.js






      share|improve this question













      share|improve this question











      share|improve this question




      share|improve this question










      asked Nov 12 '18 at 17:06









      blublu

      7,748135898




      7,748135898






















          1 Answer
          1






          active

          oldest

          votes


















          1














          You need to call knex.destroy() in the end of the test suite to teardown connection pool.






          share|improve this answer























          • Ahh, I see this ticket now github.com/Vincit/objection.js/issues/534. Ty

            – blu
            Nov 12 '18 at 18:16










          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
          );



          );













          draft saved

          draft discarded


















          StackExchange.ready(
          function ()
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53266915%2fwhy-doesnt-jest-complete-the-async-operations-in-this-node-test%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









          1














          You need to call knex.destroy() in the end of the test suite to teardown connection pool.






          share|improve this answer























          • Ahh, I see this ticket now github.com/Vincit/objection.js/issues/534. Ty

            – blu
            Nov 12 '18 at 18:16















          1














          You need to call knex.destroy() in the end of the test suite to teardown connection pool.






          share|improve this answer























          • Ahh, I see this ticket now github.com/Vincit/objection.js/issues/534. Ty

            – blu
            Nov 12 '18 at 18:16













          1












          1








          1







          You need to call knex.destroy() in the end of the test suite to teardown connection pool.






          share|improve this answer













          You need to call knex.destroy() in the end of the test suite to teardown connection pool.







          share|improve this answer












          share|improve this answer



          share|improve this answer










          answered Nov 12 '18 at 18:11









          Mikael LepistöMikael Lepistö

          7,00712728




          7,00712728












          • Ahh, I see this ticket now github.com/Vincit/objection.js/issues/534. Ty

            – blu
            Nov 12 '18 at 18:16

















          • Ahh, I see this ticket now github.com/Vincit/objection.js/issues/534. Ty

            – blu
            Nov 12 '18 at 18:16
















          Ahh, I see this ticket now github.com/Vincit/objection.js/issues/534. Ty

          – blu
          Nov 12 '18 at 18:16





          Ahh, I see this ticket now github.com/Vincit/objection.js/issues/534. Ty

          – blu
          Nov 12 '18 at 18:16

















          draft saved

          draft discarded
















































          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.




          draft saved


          draft discarded














          StackExchange.ready(
          function ()
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53266915%2fwhy-doesnt-jest-complete-the-async-operations-in-this-node-test%23new-answer', 'question_page');

          );

          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







          Popular posts from this blog

          How to how show current date and time by default on contact form 7 in WordPress without taking input from user in datetimepicker

          Syphilis

          Darth Vader #20