Mocking Asynchronous Functions with Jest

Поделиться
HTML-код
  • Опубликовано: 14 янв 2025

Комментарии • 116

  • @sharonfitzpatrick5179
    @sharonfitzpatrick5179 3 года назад +54

    This is by far the best video I've found explaining mocking Jest

  • @mateuszszaowicz4373
    @mateuszszaowicz4373 Год назад +1

    This is the best video about mocking I have encountered, it really made me understand how it works. Big thanks to you sir!

  • @imekachi
    @imekachi 2 года назад +5

    Thank you for taking us into traps and teaching us how to escape/fix them.
    Short, precise, and easy to understand, also with sections that you can jump around and quickly learn what you need. 👍 Amazing.

    • @SwashbucklingwithCode
      @SwashbucklingwithCode  2 года назад

      I appreciate the feedback and knowing that the effort was useful. Cheers!

  • @ShubhamKumar-mk6zb
    @ShubhamKumar-mk6zb 10 месяцев назад

    I prefer blogs over videos, thankyou for making one and very understandable.

  • @arfasaif6139
    @arfasaif6139 2 года назад

    one of the simplest and well-explained clean video of jest mocking so far! thanks!

    • @SwashbucklingwithCode
      @SwashbucklingwithCode  2 года назад +1

      Thank you for the kind words. Always nice to hear that your efforts were appreciated.

  • @viridianite
    @viridianite 2 года назад +2

    Thank you so much, Jimmy! You're slowly demystifying testing JS code with Jest for me!

    • @SwashbucklingwithCode
      @SwashbucklingwithCode  2 года назад +1

      That's what I like to hear. Thank you for letting me know.

    • @viridianite
      @viridianite 2 года назад +1

      @@SwashbucklingwithCode You've a talent for pedagogy. Thanks for your video on asynchronous JS. I'm looking forward to your future videos :)
      I've a few topic suggestions:
      * REST API using express.js and some database library This could be a multiple parts series like your CI/CD series. You could show how you'd write the tests for it (e.g., unit tests, integration tests, and e2e tests), consume it with something like Axios, etc.
      * GraphQL API

  • @LeoMuzi
    @LeoMuzi 2 года назад +2

    Thank you so much! This is really useful to understand how mocking works under the hood, helps you thinking of what's going on to figure out issues with testing. Helped me a lot.

  • @jimmymac601
    @jimmymac601 3 года назад +2

    I will personally hunt down anyone who downvotes this tutorial. Outstanding presentation.

  • @tachylamurray9452
    @tachylamurray9452 2 года назад +1

    God Bless you or whatever. I lost a whole day trying to figure out how to call my test async. So true how "it might not be so obvious to some" Thank You!

  • @SwOOp_de
    @SwOOp_de 5 месяцев назад

    Great video...thanks for explaining jest mocks.

  • @petergoodey
    @petergoodey 2 года назад +1

    We have struggled with axios mocking on a complex React/Typescript project having only recently up-skilled. Best explainer!

    • @SwashbucklingwithCode
      @SwashbucklingwithCode  2 года назад

      Thank you for the kind words and I'm happy to hear your skills are improving.

  • @yanyangiachan
    @yanyangiachan 3 года назад +1

    this video is short and easy to understand, please make more videos for unit testing, it is helpful for a beginner like me. Thanks!

  • @vikram87in
    @vikram87in 2 года назад

    The way you teach is fantastic! And yes, this is the best video on the topic.👏👏 Thank you so much

  • @aglowkeys
    @aglowkeys 3 года назад +3

    Thank you! This was so useful to me. Gonna be watching some more of your Jest videos now. :)

  • @CristianAndresNietoGarcia
    @CristianAndresNietoGarcia 3 года назад

    An excellent resource in my current journey in Unit testing

  • @saprone8885
    @saprone8885 2 года назад

    This is great and helped me a lot understanding async mocking and got it working in my own project! I am happy thanks for this :)

  • @Bregylais
    @Bregylais 2 года назад

    Subscribed, liked, and alas commented. Beautifully explained!

  • @santhoshraghavpidathala3701
    @santhoshraghavpidathala3701 3 года назад +4

    Please continue to teach jest and react testing library

  • @Huey-ec1
    @Huey-ec1 7 месяцев назад

    Great explanation

  • @hhdev9954
    @hhdev9954 3 года назад +1

    Very good explained 💡, thank you Jimmy!😊

  • @suryapratap9915
    @suryapratap9915 Год назад +1

    @SwashbucklingwithCode Thank you so much for the in depth explanation. What if my function is having multiple axios calls and these axios calls are wrapped in another function called 'makeApiCall'.

    • @SwashbucklingwithCode
      @SwashbucklingwithCode  Год назад +1

      If you have a function that abstracts all the fetching, it actually makes it easier to mock because you can just mock that module itself. Just make sure it is exported, and I usually put it in it's own file.

  • @aashisharyal9704
    @aashisharyal9704 Год назад +1

    Amazing 👏👏 Thank you so much 💕

  • @kiberslav
    @kiberslav 2 года назад

    Very Useful video. Nice explaining 👏Thank you. Please keep it up with testing videos, this is gold.

  • @emmanuelsackey3026
    @emmanuelsackey3026 3 года назад +1

    Thank you. You earned a subscriber at "Sanity check" . Awesome bro.

  • @bikizzle
    @bikizzle Год назад

    Thank you for this life saver video. This is great knowledge shared

  • @Andrans1
    @Andrans1 3 года назад +1

    Amazing tutorial, thanks for sharing your knowledge

  • @j.ignacior.p.9481
    @j.ignacior.p.9481 Год назад

    Awesome video. Thank you very much.

  • @claudiobaumgartner2760
    @claudiobaumgartner2760 3 года назад +2

    Super interesting! Thx for the nice tutorial 🔥

  • @matthieu1551
    @matthieu1551 3 года назад +2

    Very interesting. Thanks a lot 🤩

  • @JoseciusDev
    @JoseciusDev 3 месяца назад

    Thanks for this content. (from India
    )

  • @OhReallyHuman
    @OhReallyHuman Год назад

    "...test properly fails..." that line is hilarious and scary at the same time haha.

  • @alfredmadere9030
    @alfredmadere9030 2 года назад +1

    Great vid bruv. Make another about standard practices for mocking models and such

  • @Alan.livingston
    @Alan.livingston 2 года назад +3

    Needs to be more stuff of this quality on the net. Most explanations are too simplistic and are aimed at people with no experience.

    • @SwashbucklingwithCode
      @SwashbucklingwithCode  2 года назад +2

      I agree, and thank you. I can empathize more now with the lack of intermediate videos because they are quite challenging to figure out how much explanation to put in without making the videos crazy long.

  • @programandocomandersonsouza
    @programandocomandersonsouza Год назад

    Excelent.
    Thank you so much.

  • @gordemn
    @gordemn 2 года назад

    Wow I was really struggling with this but got it to work thanks to your videos. Thank you js Jesus

  • @shwackthenoobsac
    @shwackthenoobsac 2 года назад +1

    Thank you!

  • @zacalves
    @zacalves 3 года назад +1

    great tutorial! thanks a lot for that!

  • @johannyberg4988
    @johannyberg4988 3 года назад +1

    Good job!

  • @creative-commons-videos
    @creative-commons-videos 3 года назад +2

    Not always a response have success but sometimes it throws an Error too, so how can we mock the errors and handle it ?

    • @SwashbucklingwithCode
      @SwashbucklingwithCode  3 года назад

      Lovely question. I'll likely do a part 2 of this video for error states and multiple endpoints.
      In the meantime, I'm sure other comment readers would love to here your (and others) answer after you take a stab at it.

  • @dharmsingh6924
    @dharmsingh6924 3 года назад

    Nicely explained 👍

  • @mubashirarif5792
    @mubashirarif5792 3 года назад

    Sir big fan...CodeStackr named you in his video on monday and I am since then loving your content....

  • @haralc
    @haralc 3 года назад +3

    Thank you Jesus for this tutorial! 🤣

  • @y_thedreamer95
    @y_thedreamer95 2 года назад +1

    which font do you use at WSL? it looks awesome!

  • @lifeisbeautifu1
    @lifeisbeautifu1 2 месяца назад

    Thank you

  • @adrianjason13
    @adrianjason13 3 года назад +2

    Helpful content, thanks! What VSCode extension are you using for intellisense/autocompleting Jest code?

    • @SwashbucklingwithCode
      @SwashbucklingwithCode  3 года назад +1

      I believe that was shown in a previous video in this videos playlist, but it comes from installing @types/jest

  • @DevTomazetti
    @DevTomazetti Год назад

    Awesome video! How can I mock the error case?

  • @el.vilchez183
    @el.vilchez183 Год назад

    Thanks Jesus for teaching mocks :D

  • @mahmoudnasser2158
    @mahmoudnasser2158 3 года назад +2

    What about if you have multiple gets to different endpoints and each return different information? How could you mock each api get separately to tell Jest “this is the data you should expect for api A but another data for API B”?

  • @PrieyudhaAkaditaS
    @PrieyudhaAkaditaS 3 года назад +1

    Thankyou

  • @mohammedamin6859
    @mohammedamin6859 3 года назад +3

    awesome stuff man, can you create react-centric testing tutorials?

    • @SwashbucklingwithCode
      @SwashbucklingwithCode  3 года назад

      I've been pondering on that for a little bit. I've had a few requests, but I'm not sure how much I'd be stepping on Kent C Dodds toes, since I use his library and he has a bunch of tutorials for it.
      Thanks for the request, I'll definitely be thinking on it.

  • @HarelTussi
    @HarelTussi 3 года назад +1

    Awesome content, can you please upload more videos on jest and react-testing-library

    • @SwashbucklingwithCode
      @SwashbucklingwithCode  3 года назад +3

      Unit Testing and Jest are likely the next series I'll be working on. I've had a few requests for testing-library, so I'll probably throw that in the mix.

  • @santhoshraghavpidathala3701
    @santhoshraghavpidathala3701 3 года назад

    Thanks a lot, I am about to ask jest and react testing library. Could you please teach promises with API not with settimeouut function

  • @Nurtylek
    @Nurtylek 3 года назад

    great!

  • @sauravthakur6261
    @sauravthakur6261 Год назад

    make a video on redis mock get set functions

  • @Emma-eb5zb
    @Emma-eb5zb 2 года назад

    How can I test a function that calls multiple other functions?

    • @SwashbucklingwithCode
      @SwashbucklingwithCode  2 года назад +1

      You'd call it just the same as any other function. You likely should individually test those subfunctions as well.
      The only real issue is when there are side-effects happening with any function, and that's a situation where you either should mock or rewrite the function to not cause side-effects (depending on limitations).

  • @WebDevwithTed
    @WebDevwithTed 4 месяца назад

    So mock is to test it "fake" and then end to end for real test?

  • @oscareberle744
    @oscareberle744 3 года назад

    Thanks Jesus for this video! :)

  • @sivaram7115
    @sivaram7115 Год назад

    what if we have 2 get api calls in the react component. How to return different values for both

    • @SwashbucklingwithCode
      @SwashbucklingwithCode  Год назад

      I believe you can down some narrowing based on the endpoint path, but how I prefer to handle this is make a module that exports a bunch of api calls as functions. I name them based on what they do.
      This way, you can mock the entire function.

  • @EulerAlvarenga1
    @EulerAlvarenga1 2 года назад

    I'm using typescript. When I call the real api the test works but when I call the mockImplementation it always returns undefined =/

    • @viridianite
      @viridianite 2 года назад

      You should be resolving the returned promise to some value. By default, Promise.resolve() resolves to undefined.

  • @sameerizaj5458
    @sameerizaj5458 Год назад

    sir please answer me the thing is the api part i did understand the thing is i'm a backend dev right so i'll be testing the endPoint via your method right i'll not actually call the function since it'll be a endppoint and second thing is that what if i want to mock the function that interacts with mongdb and returns the promise so my question my team lead said you don't need to import the mock service file in which just mock the functions so that means that i''l allo do the same like just resolved the value that function return and also in my some spis i've very complex data like array which contains the objects and each might have the array nested so that's why i'm asking please help me i've deliverd the project tommorow

  • @aspirinemaga
    @aspirinemaga 2 года назад

    Very informative, but it seems won't work in my case for no reason

  • @cla1814
    @cla1814 3 года назад

    you should post source code in the video description.

    • @SwashbucklingwithCode
      @SwashbucklingwithCode  3 года назад

      In most videos I do, but this one was based off a blog post which has the required code. The complete test code is at the bottom, but I could see how it would be more convenient to have files to follow around.

    • @SwashbucklingwithCode
      @SwashbucklingwithCode  3 года назад +1

      Added this in the description, thanks for letting me know:
      github.com/Jimmydalecleveland/jest-mock-async-example

    • @cla1814
      @cla1814 3 года назад

      @@SwashbucklingwithCode Always good idea to post code, even if at least github gist, that way If someone is coding alone can compare their code or save it for future reference.

  • @Chavez3d
    @Chavez3d 2 года назад

    is lemmy kilmister your dad? also great video, sub'd!

  • @80Vikram
    @80Vikram 2 года назад

    Jesus is real and he loves TDD. Thanks for saving developers' lives US Jesus

  • @elsetiyawan
    @elsetiyawan Год назад

    I feel like Jesus teach me testing.

  • @reasonforge9997
    @reasonforge9997 2 года назад +1

    Lots of mocking in this video...but it's all in Jest.

  • @hendra5604
    @hendra5604 3 года назад +2

    First ☝🏻😅

    • @SwashbucklingwithCode
      @SwashbucklingwithCode  3 года назад

      You are indeed.

    • @hendra5604
      @hendra5604 3 года назад

      @@SwashbucklingwithCode What theme used there? Deep ocean?

    • @SwashbucklingwithCode
      @SwashbucklingwithCode  3 года назад

      @@hendra5604 This is actually my own theme called Everset. marketplace.visualstudio.com/items?itemName=jimmydc.everset

    • @hendra5604
      @hendra5604 3 года назад +1

      @@SwashbucklingwithCode Perfect, many thanks. I just hated purple's around material theme. Created my own theme for personal use, had hard time to distinguish color between html, json, php, ts/js, py, yaml.

  • @methmaaravinda5107
    @methmaaravinda5107 11 месяцев назад

    oh jesus

  • @moacirsouza5343
    @moacirsouza5343 3 месяца назад

    Jesus!

  • @erenyeager7465
    @erenyeager7465 Год назад

    Jesus

  • @yashkaliapiano
    @yashkaliapiano Год назад

    Jesus teaching software testing

  • @shadev23
    @shadev23 2 года назад

    Jesus ???? It's you ???

  • @serial_coder
    @serial_coder 9 месяцев назад

    Jesus Christ

  • @jimlatsko4804
    @jimlatsko4804 3 года назад

    Can you please help with converting this to typescript? Specifically the line mockAxios.get.mockImplementation(() => Promise.resolve({data: {name: "Jimmy Jedi"}})); since mockImplementation generates the following compiler error: TS2339: Property 'mockImplementation' does not exist on type ' >(url: string, config?: AxiosRequestConfig) => Promise '.

    • @jimlatsko4804
      @jimlatsko4804 3 года назад

      With help from stackoverflow, got this working: here are some changes to consider for typescript:
      import axios from "axios";
      const mockAxiosGet = jest.spyOn(axios, 'get');
      mockAxiosGet.mockResolvedValue({ data: {name: 'Luke Skywalker'}});

    • @SwashbucklingwithCode
      @SwashbucklingwithCode  3 года назад

      Have you already installed @types/jest ?

    • @jimlatsko4804
      @jimlatsko4804 3 года назад

      @@SwashbucklingwithCode yes.

    • @SwashbucklingwithCode
      @SwashbucklingwithCode  3 года назад

      @@jimlatsko4804 Hmmm I don't recall getting an error in TS for mock methods. You might have to set axios with teh `as` keyword to jest.Mock or something like that.

    • @EulerAlvarenga1
      @EulerAlvarenga1 2 года назад

      I had the same issue,
      With help from stackoverflow, got this working: here are some changes to consider for typescript:
      import axios from 'axios'; // import axios instead of mockAxios
      jest.mock("axios");
      const mockedAxios = axios as jest.Mocked // head up here, I changed the name of the var