JavaScript Testing - Mocking Async Code

Sdílet
Vložit
  • čas přidán 16. 10. 2018
  • Testing async JavaScript code or testing JS dependencies in general can be difficult. But "mocking" is a technique that can easily be implemented with Jest to make JavaScript testing a breeze again.
    ----------
    Starting Code: github.com/academind/js-testi...
    Finished Code: github.com/academind/js-testi...
    Learn JavaScript from scratch: acad.link/js
    Want to learn something totally different? Check out all other courses: academind.com/learn/our-courses
    ----------
    • You can follow Max on Twitter (@maxedapps).
    • And you should of course also follow @academind_real.
    • You can also find us on Facebook.( / academindchannel )
    • Or visit our Website (www.academind.com) and subscribe to our newsletter!
    See you in the videos!
    ----------
    Academind is your source for online education in the areas of web development, frontend web development, backend web development, programming, coding and data science! No matter if you are looking for a tutorial, a course, a crash course, an introduction, an online tutorial or any related video, we try our best to offer you the content you are looking for. Our topics include Angular, React, Vue, Html, CSS, JavaScript, TypeScript, Redux, Nuxt.js, RxJs, Bootstrap, Laravel, Node.js, Progressive Web Apps (PWA), Ionic, React Native, Regular Expressions (RegEx), Stencil, Power BI, Amazon Web Services (AWS), Firebase or other topics, make sure to have a look at this channel or at academind.com to find the learning resource of your choice!
  • Věda a technologie

Komentáře • 101

  • @ultrasamad
    @ultrasamad Před 5 lety +103

    Testing is something you don't quite often find in most tutorials. Thanks for tackling this all important topic.

    • @academind
      @academind  Před 5 lety +17

      I also think it's an important topic, happy to read that you liked the video Ibrahim!

    • @jaycesullivan8512
      @jaycesullivan8512 Před 2 lety

      You prolly dont give a damn but does someone know of a trick to get back into an Instagram account??
      I was stupid lost the login password. I love any tricks you can give me!

  • @andriantsygulev7806
    @andriantsygulev7806 Před 5 lety +3

    Hi, Max
    Thank you for this video.
    This is the best explanation of moking with jest, that I found!
    I was not familiar with using moke functions, before watching this video, but now I can use this great thing for testing methods in my project)

  • @riyazghati6615
    @riyazghati6615 Před 5 lety +16

    Every time I see your technical videos, all my doubts,confusions vanishes ....amazing work😍😍

  • @gabrielprrd
    @gabrielprrd Před 3 lety +1

    Honestly the best explanation I could find on mocking. Thank you :)

  • @unutilized
    @unutilized Před 3 lety +1

    You are such a gifted teacher. So focused. Thank you

  • @inclinedscorpio
    @inclinedscorpio Před 3 lety +1

    Hey Max! This is Ashutosh Tiwari ! Thanks for this ❤️ As always you are great !

  • @sandeepamarnath2272
    @sandeepamarnath2272 Před 2 lety +1

    As always, you're the best tutor! Note: Max, when I open the link to the github to clone the code I got the previous video's code and not the one you teach here about mock. Not sure if it's only for me but please take a look so it will help others to easily code along.
    Again, thanks a lot as usual for your wonderful tutorial.

    • @MrMacjo22
      @MrMacjo22 Před rokem

      "git switch async-code" should help you out

  • @dariogabalec13
    @dariogabalec13 Před 3 lety

    best explanation about Mocking on the internet, thanks! 😀

  • @ossie500
    @ossie500 Před 4 lety

    Best explanation of jest mocking so far. Thanks

    • @academind
      @academind  Před 4 lety

      Awesome to read that Ossie, thanks a lot!

  • @peeeeb
    @peeeeb Před 3 lety

    Super helpful, thanks Max!

  • @cempesket7694
    @cempesket7694 Před 5 lety

    Wow. Jest is just amazing. Thank you Max

    • @academind
      @academind  Před 5 lety

      Happy to read that you like the video, thank you for your comment!

  • @mrpiggy9793
    @mrpiggy9793 Před 5 lety

    great video really helpful, everything is explained as clear as water

  • @sbacon92
    @sbacon92 Před 3 lety

    Excellent video.
    I've been using mocha/chia/nyc for years.
    I think i'll try jest.

  • @twinstars3428
    @twinstars3428 Před 3 lety

    A very nice tutorial on javascript testing. Thank you.

  • @kwekukilu2196
    @kwekukilu2196 Před 4 lety

    This is the best explanation ever

  • @driden1987
    @driden1987 Před 4 lety

    Hahaha, Max always pops up when searching for something I need

  • @HuyLe-vv7go
    @HuyLe-vv7go Před 5 lety +4

    Hey Max, you should add Unit Test into your Udemy Angular 2+ Courses to make it even more great. Love your works btw.

  • @BreakingGame
    @BreakingGame Před 4 lety +2

    Excelente explicação. Thank you!

  • @rodrigomarsan1143
    @rodrigomarsan1143 Před 2 lety +1

    I would really love a full course on testing with jest, enzyme and react testing library

  • @StarContract
    @StarContract Před 3 lety

    That was crystal clear, thanks

  • @alexpro5670
    @alexpro5670 Před 2 lety

    Cool tests with Jest

  • @duinho
    @duinho Před 5 lety

    Just subscribed after watching this video. Thanks so much!

    • @academind
      @academind  Před 5 lety

      Thank you for your support, great to have you on board!

  • @AF-it4ib
    @AF-it4ib Před 3 lety

    Great video mate !!!! Thanks

  • @kisanpakhreen
    @kisanpakhreen Před 3 lety

    thank you for the tutorial. Please make more videos in testing.

  • @akasharojee8569
    @akasharojee8569 Před 3 lety

    Good explanation! Thanks.

  • @cvanputt
    @cvanputt Před 4 lety +3

    Really excellent instruction! I bought your React course on Udemy. You are a very good teacher Thank You!

  • @ivanaleksandrov7157
    @ivanaleksandrov7157 Před 5 lety

    Max, you nailed the technical stuff, how about a video or even better a series on being a freelance developer?

    • @academind
      @academind  Před 5 lety

      We'll mainly stick to the technical stuff, but we also consider releasing some none technical videos. So we'll see :)

  • @EleandroReis
    @EleandroReis Před 4 lety

    Max you are the best!

  • @jelenatrifkovic5567
    @jelenatrifkovic5567 Před rokem

    Thank you for this video.

  • @saek7593
    @saek7593 Před rokem

    Max, thank you so much!!!

  • @davidoliveira242
    @davidoliveira242 Před 3 lety

    Thanks Max!

  • @rajgohil8610
    @rajgohil8610 Před 2 lety

    Thanks for the help

  • @ippenshindemiru8023
    @ippenshindemiru8023 Před rokem

    my friend,just perfect.................

  • @emarcelino3
    @emarcelino3 Před 4 lety

    very, again, very good!

  • @maurobagnoli3415
    @maurobagnoli3415 Před 2 lety

    Great metaphore in the cover XD

  • @antonijakasum313
    @antonijakasum313 Před 2 lety

    Great video!

  • @snake1625b
    @snake1625b Před 3 lety

    10/10 explanation

  • @LifeIsGood1992
    @LifeIsGood1992 Před 5 lety

    Thank you!!

  • @dataninjanl1263
    @dataninjanl1263 Před 3 lety

    Does this mean that when you change the fetchdata function, you also have to change it’s mock or are there any tools that can help with this?

  • @EricOnYouTube
    @EricOnYouTube Před 4 lety

    Max, I am trying to be good and start writing tests for my code. But I have a problem.... since all tests should be an island, what I do in one test should not influence another. The problem is that my variable, for example, that holds a list of all the users who have joined the game will hold data from a previous test. How do I deal with variables like that? Thanks.

  • @Bacisful
    @Bacisful Před 4 lety

    Thanks a lot!

  • @fotoflo
    @fotoflo Před 3 lety

    Hi, How can I mock an api request time out or rejection for rate limiting so I can build back off functions?

  • @maksym7279
    @maksym7279 Před rokem

    Great! Thanks!

  • @alexandrovcharenko9769

    really cool! thanks!

    • @academind
      @academind  Před 5 lety

      Happy to read that you like it, thank you!

  • @dmitrik5566
    @dmitrik5566 Před 2 lety

    Is this possible to do in angular with is configured to use jest? Is it possible to override a function manually like in the video?

  • @jadetaboada447
    @jadetaboada447 Před 3 lety

    how can we stub this?
    // some module, "sum.js" that's "required" throughout the application
    module.exports = function(a, b) {
    return a + b;
    };

  • @nenadtrajkovic2715
    @nenadtrajkovic2715 Před 3 lety

    Hi, how can we use map() function inside loadTitle() if response.data from fetchData() return array of objects? How we mock that, I get error map is not a function. Thank You

  • @ramonportela7048
    @ramonportela7048 Před 5 lety +1

    OMG! Max you are awesome!

    • @academind
      @academind  Před 5 lety

      YOU are awesome Ramon, thank you very much for your comment!

  • @dominiktargosz3094
    @dominiktargosz3094 Před 5 lety

    But what if I don't know what will be the response from the API? For example when I fetch new random word with every request to the server

  • @daviaugusto4828
    @daviaugusto4828 Před 3 lety

    thanks man!

  • @khalidelgazzar
    @khalidelgazzar Před rokem

    Great video, though Concepts are more advanced than the previous video

  • @alexchiu
    @alexchiu Před 4 lety

    can you mock the browser fetch api using this same method?

  • @JeremyMoritz1
    @JeremyMoritz1 Před 3 lety +2

    Max, the starting code you linked in the description is actually the code from the PREVIOUS video. I cannot seem to find anywhere the starting code for this video. Can you please include it? Thanks for another great tutorial!

    • @smartypantscoder6912
      @smartypantscoder6912 Před 3 lety

      It's there. You need to use command 'git checkout async-code' in the terminal. You will need the git installed for that. This one repo contains all codes from all different project. But they are in different branches.
      after checking out async-code branch, you will have to enter 'git checkout 87dbd' because the data is in that commit.

  • @cryptoeric24
    @cryptoeric24 Před 2 lety

    When I run my mocks with --coverage I do not get any coverage, but when I run my test without the mocks I get coverage. Does Jest not cover mocked code??

  • @superknife0512
    @superknife0512 Před 5 lety

    Hi Max and Academind team, I see they say about some things like ESlint, Jshint ,... but actually what's that and why we need to use it in our project. Can you make a Video to explain about one of them and how to use it.

  • @romanlisenko271
    @romanlisenko271 Před 4 lety +1

    how to start and open in chrome this code what is in github??

  • @damoose5788
    @damoose5788 Před 5 lety

    Plz help with react redux pagination ... there is nothing available on this ...

  • @tripathi.mridul
    @tripathi.mridul Před 3 lety

    Awesome!!!!!!!

  • @jean-baptistelasselle4562

    I like the funny accent lol
    The subject of vidéo is very pertinent thank u

  • @SithaSek
    @SithaSek Před 4 lety

    Why no import the mock axios.js while http is imported?

  • @snillochemingson2830
    @snillochemingson2830 Před rokem

    beautiful

  • @safraz1400
    @safraz1400 Před 3 lety

    awesome

  • @TDAK1509
    @TDAK1509 Před 4 lety

    You saved my life!

  • @sebastianjung3168
    @sebastianjung3168 Před 5 lety

    Hey Max,
    could you also just return the object with the title property in the mock http.js instead of returning it as a resolved Promise or why does it have to be a resolved Promise 🤔

    • @sebastianjung3168
      @sebastianjung3168 Před 5 lety

      Ah! We need to use .then onto the fetchData function. that's why.
      Thanks for this interesting series!

  • @Raamyy
    @Raamyy Před 4 lety

    I think there is a problem or something i don't understand.
    in 16:47 the test file says that we expect to get "DELECTUS..." ( all UPPER case).
    while in the __Mocks__ file in 16:48 we promise to return "delectus..." (all lower case)
    How are the test cases passing ? I think that they should fail.
    Thanks for the videos !

    • @adamtki
      @adamtki Před 4 lety

      We're not testing the get method. We're testing the loadTitle component which uses our mocked get method and uppercases the returned value from get.

  • @sourishdutta9600
    @sourishdutta9600 Před 5 lety

    Hi Max can you please make a tutorial on Angular universal and Angular playground. please .............................

  • @dakshsagar2839
    @dakshsagar2839 Před 5 lety

    In the video description, data science is mentioned, am I missing something ?

    • @academind
      @academind  Před 5 lety +1

      We do have some beginner's data science/business intelligence topics (for example about Power BI: academind.com/learn/power-bi). But at the moment the focus indeed is on web development.

  • @kartamyshevk
    @kartamyshevk Před 5 lety

    Would be nice to mention that "done" should be executed in the end of async tests in order to have proper test results (just try to resolve Promise with unexpected value without calling "done"). Thanks for the video otherwise! Very useful.

  • @porco666
    @porco666 Před 5 lety

    can you please make a serie teaching how to make some project, e.g. an api, using BDD? i would pay for that on udemy.
    BDD front end (vue, react) projects also is a rare content... i would pay fot that too...

  • @ashisharora9694
    @ashisharora9694 Před 5 lety

    hello bro how ru . i need ur help , i want to learn only one in Angular , Vue and react . plz telme which is best in all . i saw ur video abt this topic. . i want ur personal opinion . if ur beginner then which will u select . plz tell me 1 .which one best in job n future .

    • @academind
      @academind  Před 5 lety +1

      In the video I actually share my personal opinion Ashish, so I think I can't help you here, sorry :/

    • @ashisharora9694
      @ashisharora9694 Před 5 lety

      bro no need for any sorry . i already saw ur that video . i know u love React heheehhe , love u . god bless u . keep smiling

  • @ahmedmusawir
    @ahmedmusawir Před 5 lety

    Can you plz help replace componentWillReceiveProps with componentWillReceiveProps ... there is pretty much no help on this anywhere ...

  • @khalidahmada3906
    @khalidahmada3906 Před 5 lety

    what about Moxios ?

  • @RohitKumar-yy8yh
    @RohitKumar-yy8yh Před 3 lety

    How to cover onkeydown property

  • @milesrostami1782
    @milesrostami1782 Před 5 lety

    Hey max, what is the best way to test the setState callback using mocha and enzyme?
    onChangeHandler(e) {
    const { state } = this.props;
    this.setState({ search: e.target.value }, () => {
    const { search } = this.state;
    autocomplete(search).then((suggestions) => {
    if (suggestions.length > 0) {
    this.setState({
    suggestions,
    });
    }
    });
    })
    }

  • @marioeldin9315
    @marioeldin9315 Před 2 lety

    How convenient would it be to tell my engineering manager - “hey I just decided to take a few functions in this micro service and slap em in a util file because Jest was busting balls”. Yaaaa… not likely. It would of been good to see the work needed to get a passing test with your application as is because that luxury of moving around functions for testing will not pass any PR.

  • @tkdevlop
    @tkdevlop Před 5 lety

    let me guess moxios?

  • @shabeebck3057
    @shabeebck3057 Před 4 lety

    It just slow down the development

  • @gsffm9044
    @gsffm9044 Před 3 lety

    app.js is not the same I got from github. Schade

  • @monishutube
    @monishutube Před 3 lety

    Thank you!!