JavaScript Testing Introduction Tutorial - Unit Tests, Integration Tests & e2e Tests

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

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

  • @SubbingForFree
    @SubbingForFree 4 года назад +272

    11:50 - unit testing
    23:10 - integration testing
    29:23 - e2e

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

    For someone who wants to take a look at the overview before dive in the specific part. I really appreciate the way you write your description: Extremely useful

  • @ronniesunshine1163
    @ronniesunshine1163 4 года назад +34

    This is insanely useful. I regret not learning how to do testing 1.5 years ago. It would have saved me hours, if not days worth of time in testing manually

    • @tomervainshtein5863
      @tomervainshtein5863 4 года назад +2

      Scratch that, think about the time you would've saved while debugging errors on the e2e layer!
      Unit testing forces you to separate your code into small chunks and test everything as soon as possible. Crazy useful skill!!

  • @blakearcher9247
    @blakearcher9247 4 года назад +1

    Two years and 180,000+ views later, but on the off chance you see this.. THANK YOU. I have never seen a tutorial so well put together easy to understand. As a self taught developer over the last 9 months I cannot believe I have never seen your videos before. Please keep it up!!!

  • @souravprasaddas5909
    @souravprasaddas5909 4 года назад

    A genius instructor in the world. Now I have no fear in JavaScript. U made my development journey so simple and interesting. Thanks a lot from bottom of heart.

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

    Best unit testing from the ground up I've seen so far on all the world wide interwebs! Been paying for tutorials, searching high and low... Thanks for putting this together beginning with testing a most BASIC function that returns only a string concatenated value. This is what I've been looking for!!!
    The one thing I don't see anyone doing (neither professionally nor in any demonstration) is to combine debugging with unit testing functions. My biggest benefit to TDD is to setup the expectation prior to writing the function and write the function to satisfy that. That way, I am testing mostly functions only and, by the time it's completed to satisfaction, the test enforces the outputs from the function. The test is done and the function is done. I do not understand why more developers do not work this way.

  • @ibrahimandaw8780
    @ibrahimandaw8780 6 лет назад +146

    You're awesome you always give us what we want. Thanks for sharing your knowledge Max

    • @academind
      @academind  6 лет назад +9

      Thank you very much for your support Ibrahima :)

    • @80Vikram
      @80Vikram 3 года назад +1

      BLM

  • @jinkinglee2
    @jinkinglee2 6 лет назад +10

    By far the best (free) intro to testing video I've seen on the web. Thank you Max!

    • @academind
      @academind  6 лет назад

      Awesome to read that Jin, thanks a lot for your great feedback!

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

    For anyone having issues with the end to end test not completing the automated test at around the 35:00 minute part it is simply because Jest is timing out and you just need to refer to 38:29 to fix that.

  • @willemvanderveen7567
    @willemvanderveen7567 4 года назад +1

    I usually don't leave comments but this is really high quality. Thanks a lot!

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

    I can't find a better introduction course to testing. I've been struggling for far to assimilate testing. I'm currently taking a course on the topic but I still can't get the whole thing. With this video, everything I previously learned has become clearer, and now I can make a clear way to progress and fully conquer testing. Thank you so much @Maximilian

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

    i wanna mention something
    there is a long while since i watched a video in your channel and wanna say that you get so much better at explaining and you feel much more confident and experienced
    keep the good work up
    Thanks for this fruitful content

  • @cemsaglam1696
    @cemsaglam1696 4 года назад

    It is thanks to this video (and to a test I wrote for validateInput) that I can say, the "+text === NaN" check in the validateInput function always returns false. So if I send "isNumber: true" to the function, and as text input "12e", it would consider it as a valid age. Using "isNaN(+text)" solves that. Thank you, Max, for such a great introduction to js testing!

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

    Green is a beautiful color! Thanks Max for the tutorial.

  • @nat6106
    @nat6106 5 лет назад +1

    Really high quality video - both the content and the form (some graphs when needed, some code when needed). Thanks!

    • @academind
      @academind  5 лет назад

      So happy to read that, thank you Jack!

  • @moatazmahmoud1397
    @moatazmahmoud1397 4 года назад +2

    It's one of the best quick and comprehensive guides around the different levels of test automation.
    Well done mate, and please guide me if you have any similar videos in your channel that I missed.

  • @borystyminski8581
    @borystyminski8581 5 лет назад +5

    Great vid, thank you Max. I need to disagree with one thing tho. 32:00 - "async/await does it (then and catch) for you" async/await doesn't catch errors. You would need to additionally use `try {} catch (e) {}` and await within try block in order to catch errors from the promise.

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

    This video will still be relevant in 2030! Thanks you very much.

  • @anindyakundu6323
    @anindyakundu6323 4 года назад +6

    This is so coherent and well structured for providing an introduction. Thanks for the awesome video.

  • @extraxt
    @extraxt 6 лет назад +1

    Max, i'm a student of your Udemy courses. This video was great, because i didn't understand how integration tests and e2e tests works. You're always able to explain the things in a simple way. Thank you Academind.

    • @academind
      @academind  6 лет назад

      Thanks so much for your wonderful feedback Rafael, happy to read that you like my explanations!

  • @zoecarlibur
    @zoecarlibur 5 лет назад +3

    Thank You, I learned so much. It seems like JS testing is now one of the must haves when applying for jobs these days.

    • @academind
      @academind  5 лет назад

      Thanks a lot, happy to read that the video was helpful!

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

    Great Max, maybe the best teacher existing about programming languages!

  • @nickgreen4336
    @nickgreen4336 5 лет назад +7

    Max, I guess it would be a great idea to create a full course about testing, maybe using TDD, some React testing and so on. This is a course I wanna see from you so much and I hope, that one day it will become true ;)

  • @nhc772
    @nhc772 4 года назад +8

    Thank you Max! Nicely organized video. I watched it several times :)

  • @hiroyukinumaguchi1984
    @hiroyukinumaguchi1984 4 года назад

    Your explanation with specific code is very easy to understand.
    I appreciate it.

  • @laurelineparis5407
    @laurelineparis5407 5 лет назад

    I'm really impressed each time I'm looking for new things or concept to understand and explore because I'll always find you either on udemy or youtube video answering questions I've been asking myself about some vocabulary point I did get quite well.
    For couples of weeks, I've been trying to understand :
    - testing,
    - thinking about when and where to add typescript and what to test ( as working with jest we should only assert output instead of type, which typescript should do instead I reckon )
    - that there were few kinds of testing,
    - that actually I was not grasping the difference between unit testing, functional testing, integration testing and where was E2E in all that ( ends up with E2E was actually functional testing ( and not hard-related to test one function ), unit test was actually this kind of test where you actually test one function ) , then got lost with integration test.
    Your explanation was confirming some though and also made me understand better what was integration tests : testing function with other dependencies ( == other functions ).
    Can't wait to go deeper and make it to the tests automation.
    Thanks again for your explanation

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

    That's an amazing crash course about testing in JavaScript, it's so complete, I really enjoyed watching it, I've learned lots of things about testing thanks to Max, So Thank you so much, Max for this awesome crash course, You're the best💙🥰🙏🌹

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

    That was a GREAT introduction to testing man. I love how you explain things in theory and using slides before the actual practice. It gives us a better context on what we're doing. Thanks :)

  • @ALEXEIS
    @ALEXEIS 6 лет назад

    I just like this dude. He's always happy. Although it pretty normal to express some happiness when making RUclips videos, however, there's something different about his. Wish I could meet him one day.
    More power to your elbow.

    • @academind
      @academind  6 лет назад

      Thanks a lot Alexeis, I would indeed say that I'm a quite happy person, cool to read that is also visible in the videos!

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

    Things become so clear after having your videos. Thank you Max

  • @rhere.general
    @rhere.general 4 года назад

    This is a brilliant video about testing and is definitely a must for devs trying to learn to test their codes for the first time. I am super glad there is a video this clear that does not expose unnecessary complexity of other modules are not required to do testing. Its focus on testing and its conciseness made me understood the three types of testing in only one watch. Sincerely, thank you.

  • @mostafashawki
    @mostafashawki 5 лет назад

    I would say for every developer:
    "The most valuable courses you can see here on Academind"
    Thanks a lot Max :)

    • @academind
      @academind  5 лет назад

      Wow, that is awesome to read Mostafa, thanks so much!

  • @BD90..
    @BD90.. 4 года назад

    Great thanks Max, it helps me understand the javaScript testing better than just reading a document. Now I will go and learn more on using Mocha.

  • @thalesandrade_
    @thalesandrade_ 5 лет назад +34

    Finally, I learned JS Testing

    • @tomervainshtein5863
      @tomervainshtein5863 4 года назад +1

      Same here! The book wasn't enough thus this video is a savior!!! Thanks a lot, made it breif and clear!

  • @sandeshsmagdum
    @sandeshsmagdum 4 года назад +2

    As usual you are the most reliable instructor to depend on. I am enjoying your videos on Udemy. Waiting for many more videos on this topic that will help me in pure TDD and inculcate TDD approach in true sense. Thanks Max 🙂

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

    Max, can't thank you enough for your awesome videos! I learn best by clear explanation and example--your excellent teach style does both. Thank you!

  • @ekaterinahorton768
    @ekaterinahorton768 5 лет назад +1

    Your videos are great! Very often use them to learn/refresh/structure information. Thank you very much for your work!

    • @academind
      @academind  5 лет назад

      Happy to read that Ekaterina, thank you!

  • @shailysingh9436
    @shailysingh9436 4 года назад

    21:22 - The first test success indicates a "false negative", not a "false positive". False positive means that the test is failing but is not really a valid failure (for e.g. random failures). In your example, it is a false negative - test is passing, even though there's a problem with the code.

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

    Best video on testing I've seen so far, clear and detailed. thank you so much for sharing!

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

    Thanks Max, you're really the king of teaching. Thank you for so much value in your videos. Please keep it up!

  • @adrianbartholomew3785
    @adrianbartholomew3785 4 года назад

    I think that this is the best instructive video I have ever watched.

  • @yassine_klilich
    @yassine_klilich 4 года назад

    best video i have ever seen that shows the differences between those types of testing

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

    Just loved it, best tutorials all over the web man

  • @Dima-jc7fx
    @Dima-jc7fx 6 лет назад +3

    This is great stuff, thanks a lot! Would love to see other testing-related content from you Max :)

    • @academind
      @academind  6 лет назад +2

      Thanks a lot Dmitry, I might indeed dive deeper into testing in future videos.

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

    i love you max, you're great man, i've gor your react, react native, nodejs and mern courses on udemy, and i never wanted to learn about tests but now im learning and youre great man

  • @pashute12
    @pashute12 5 лет назад

    TU (Thumbs Up, Thank You, THE Ultimate) !
    Remark to readers: This of course is only an introduction about testing and not about TEST DRIVEN development, perhaps you can add a remark at the end of the vid saying that.

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

    Really I was wondering about how testing done and then I got this video. Thanks Sir.

  • @parasarora5869
    @parasarora5869 5 лет назад +10

    you made testing look so damn easy...i love it and want dive deep into testing !!...thank you very much sir
    amazing video !!!!!!!!!!!!

  • @codewithnacho
    @codewithnacho 5 лет назад

    This video is awesome! It perfectly shows the three most common types of testing. Thank you very much Max for sharing this!!

    • @academind
      @academind  5 лет назад +1

      Happy to read that the video was helpful for you, thanks a lot for your comment!

  • @newvocabulary
    @newvocabulary 6 лет назад +252

    I'm afraid to watch this video for fear I'll have to refactor a years worth of work.

    • @alisultani1182
      @alisultani1182 6 лет назад +7

      Same here

    • @mateuszgwozdz
      @mateuszgwozdz 5 лет назад +5

      start with a single e2e test that actually helps you skip manual test

    • @biansoralmerol4272
      @biansoralmerol4272 5 лет назад +1

      lol

    • @robertquainoo
      @robertquainoo 4 года назад

      you can implement the tests for new functions as you keep coding and them make the changes over time when you make updates to old functions

    • @jangohemmes352
      @jangohemmes352 4 года назад

      3 years here, haha. Like someone else pointed out: The Boy Scout Principle works wonders. Leave everything better than you found it (i.e. everywhere you visit, you create tests for it)

  • @kylerebstock1487
    @kylerebstock1487 4 года назад

    Loved that you used puppeteer too! Cypress is a nice tool to use very similarly as well. The only thing I saw missing was integration tests for api and integrations. Would love to see that!

  • @elcio-dalosto
    @elcio-dalosto 9 месяцев назад

    This video is from 5 years ago, but still very useful, and I think it still be for some years to come.

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

    Great examples. Please more about testing.

  • @AmitKB00
    @AmitKB00 4 года назад

    An excellent walk through from concept to uses example. It helped me to get familiar with testing.

  • @dawid_dahl
    @dawid_dahl 4 года назад

    Excellent video as usual, thank you! Most people only show unit testing and I'm like, "Yeah, but..."

  • @ягодник
    @ягодник 4 года назад

    Straight into and out of the point. Thanks.

  • @crystalyun833
    @crystalyun833 4 года назад +1

    You are a game changer. Keep up the good work! subscribed :)

  • @diyskipper
    @diyskipper 5 лет назад +1

    Your channel has helped me tremendously!

    • @academind
      @academind  5 лет назад

      Just awesome to read that Elem, thanks a lot for your comment!

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

    Max, thanks for this amazing video, congratulations !

  • @sanchezcarlos1986
    @sanchezcarlos1986 5 лет назад

    In React case, what should I use?
    For Unit and Integration Tests:
    - Jest + (enzyme or react-testing-library)
    For e2e tests:
    - Puppeteer or Cypress?
    Great video, thanks for sharing!

    • @apskidev
      @apskidev 5 лет назад

      Yes that's sound about right. You can't test React Hooks using enzyme which is why react-testing-library is getting popular, and it's actually pretty good.

  • @xkali8119
    @xkali8119 4 года назад

    On 27:30 you can just add this. before validateInput function call, and it should work correctly

  • @EricOnYouTube
    @EricOnYouTube 4 года назад +2

    Another amazing tut by you. Danke dir vielmals, Max. :)

  • @jonathangreene685
    @jonathangreene685 4 года назад

    That was an amazing video thank you so much. I loved how to showed and explained how puppeteer was working. Thank you.

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

    This channel should feature on Netflix.

  • @ErnestGWilsonII
    @ErnestGWilsonII 6 лет назад +1

    @Academind @Max this is a fantastic video, thank you for making it and sharing it with all of us! Can you please make additional videos going into more detail? Specifically when you refactored your code for the integration test, that is where most people have trouble. You quickly ran through an example where you refactored and created a testable function, that is where most folks are struggling! Can you please consider going into more depth and taking your time as you expertly refactor code making it testable? In fact, I humbly request that you make three additional videos based on this video, you had three topics that you could expand on and help all of us understand in more detail, first was unit tests, second was integration tests and third was end-to-end tests... Each of these could be a more in-depth video with various working examples, I emphasize the word working, it is hard to find good examples clearly explained as you do. As always, thank you for making the internet a better place and of course I am subscribed with notifications turned on and thumbs up!
    UPDATE: I had to come back and update my comment after watching this video a second time, I feel compelled to add that this is possibly the best testing video for JavaScript on the internet! I must again reiterate and respectfully request that that you make additional videos on this topic and go into even more depth please Max!
    Also, watching you use puppeteer makes me think it could be used for automation tasks in addition to testing, so many possibilities here, my head is spinning! Fantastic video! I wish I could give this video a thousand thumbs up! I will be sharing this with many co-workers and friends!

  • @sprintwithcarlos
    @sprintwithcarlos 5 лет назад

    This is the best testing video ever, you are a sensei

    • @academind
      @academind  5 лет назад

      Thank you very very much Carlos, this honestly means a lot to me!

  • @godhandinfamous
    @godhandinfamous 6 лет назад +10

    Thank god it arrived!

  • @fuanka1724
    @fuanka1724 6 лет назад

    Very nice and clear. Makes want to write more unit tests. Thank you!

    • @academind
      @academind  6 лет назад

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

  • @stillobsessive
    @stillobsessive 5 лет назад +2

    Thank you, it was another awesome tutorial :)
    When I following your steps I stucked with installing puppeteer on my machine because of my company
    SSL Certificate restriction, I'm using windows 10. Little bit searching (Soon my company will make me DevOps lol) I found solution like "npm config set puppeteer_skip_chromium_download true" then "npm install puppeteer --unsafe-perm=true". After that I used const browser = await puppeteer.launch({executablePath: 'C:\\Program Files (x86)\\Google\\Chrome\\Application\\chrome.exe'});
    Maybe it can help those who have the same problem as me.
    *Note:* npm install puppeteer *--unsafe-perm=true* in this line, I'm not sure if it's necessary and I don't know any safety issue in that.

  • @blokche_dev
    @blokche_dev 6 лет назад +1

    Really cool introduction to testing. Thanks you. Cypress seems to be an excellent alternative for E2E tests. Have you ever tried it?

  • @sourishdutta9600
    @sourishdutta9600 6 лет назад +12

    Thanks you so much.Make a full tutorial on that.thanx Max.

    • @academind
      @academind  6 лет назад +3

      I might indeed create more content about testing in the future, but we'll see. Thank you for your comment Sourish!

    • @saimirkapaj255
      @saimirkapaj255 6 лет назад

      If

    • @jincypaul05
      @jincypaul05 5 лет назад +1

      @@academind Please continue the series.....

    • @walrider7374
      @walrider7374 5 лет назад

      udemy :)

  • @vj13377
    @vj13377 6 лет назад +2

    I prefer to start with a failing test, because sometimes tests will pass even without any code (e.g. async code).

  • @sagaryadav-qn4ed
    @sagaryadav-qn4ed 6 лет назад

    Thanks for the nice explanation , I am back end developer but you inspire me to learn front end technology. Great :)

    • @academind
      @academind  6 лет назад

      Happy to read that Sagar, thanks a lot for your comment!

  • @errrzarrr
    @errrzarrr 5 лет назад

    I suppose Puppeteer can (and should) be used to test UI generated by popular front-end technologies like React, Vue & Angular - In fact, most web UI are generated by those instead of direct DOM manipulation at the back-end.
    Rest assured I get you chose this way for creating easier and faster an end dummy object which you can test on, which is the purpose of the video.
    Thanks!

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

    Max's tutorials are great!
    I noticed when he hovers over a function, like "test()", he gets extra info about that function, and also extra methods. Prime example of both at 17:00. I get that for some packages, but not others. Any tips how to fix this?

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

    It was a very quick and understandable explanation! Anyway, now Mocha has supported assertion library too right? Correct me if I'm wrong please.

  • @DavinirFCamposJr
    @DavinirFCamposJr 6 лет назад

    Another excellent video, as always. Thanks, Max!

    • @academind
      @academind  6 лет назад

      Thanks a lot for your great feedback Davinir!

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

    Excellent , what other doc/courses that you recommend for advanced unit testing ?

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

    This video is awesome in explaining how to write and run test

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

    You will NEVER cease to amaze me with your teaching skills Max, really love you and your content, a thousand Thank you(s). God bless you in Jesus Christ name. Amen

  • @roopamgarg1085
    @roopamgarg1085 6 лет назад

    Awesome video again.... thanks a lot for this video..... and also a small request.... for making a video on a scalable node js backend that can handle many requests at the same time and have a better response time.

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

    2021: Academind still Acing with these examples :D

  • @benstuijts5620
    @benstuijts5620 6 лет назад

    Great tutorial, with Some good real life examples. Please continue to react and react native testing...

    • @academind
      @academind  6 лет назад

      Thanks a lot Ben, I might also have a look at React testing in the future.

  • @oscarquinteros4108
    @oscarquinteros4108 4 года назад

    Great tutorial as always. I know this is about 2 years old but What do you think about using Cypress for Browser testing?

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

    I am surprised that this video is not 30h+. Coming from Udemy and his courses this is a surprise! xD Just kidding, thank you for this video.

  • @CirTap
    @CirTap 4 года назад +1

    Puppeteer is no longer maintained and you get an outdated version of Chrome. Testing with or for other browsers gets more complex as you may need to install ever more stuff like Selenium and WebDrivers for each browser.

  • @edumarcolino
    @edumarcolino 6 лет назад

    Wow! Great Job!! Thank you very much for this video. Looking forward to the next one

    • @academind
      @academind  6 лет назад +1

      Thanks a lot for your awesome feedback Eduardo, this really means a lot to me!

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

    Hi Max, thanks for the video, at 17:00, how did the recommandations pop out automatically? what did you do there? My VSC doesn't pop out recommandations automatically.

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

      Oh I figured it out. stackoverflow.com/questions/42024526/vscode-automatic-type-acquisition-for-jest. Cheers!

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

    Exactly what I was looking for! Very well explained :) Thanks a lot :)

  • @aayushjoglekarpersonal7392
    @aayushjoglekarpersonal7392 4 года назад

    If the Jest autocomplete is not coming up in VS Code, you can type 'npm i --save-dev @types/jest' and restart VS Code.

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

    Great video .. very well explained.. thank you Max!

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

    Brilliant video, thank you Max!

  • @emredemir6637
    @emredemir6637 6 лет назад

    Thanks. It is a very good and simple way of diving to the testing.

    • @academind
      @academind  6 лет назад

      Thanks a lot for your great feedback Emre!

  • @sudhanshudas5464
    @sudhanshudas5464 5 лет назад +1

    Nice information. What about someone wants to run the test against other browser agents (Like Firefox / Safari). Puppeteer only supports chrome.

  • @sharmilasanu3094
    @sharmilasanu3094 4 года назад

    Surely ..he is a great teacher

  • @gudofabi314
    @gudofabi314 4 года назад

    I love this tutorial. . .I hope you made more vids to help developers like me :)

  • @윤안톤-q6e
    @윤안톤-q6e 6 лет назад

    Thank you! I studied a lot of about Web programming with your videos. :)

    • @academind
      @academind  6 лет назад

      So cool to read that, thanks a lot for your comment!

  • @agent4140
    @agent4140 5 лет назад +3

    Wish I could like this vid 10 times

  • @imranhossain6443
    @imranhossain6443 4 года назад

    This was really helpful. Thanks Max.

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

    Nice intro Max!