Spy with Mockito - Spy vs Mock

Поділитися
Вставка
  • Опубліковано 6 лис 2024

КОМЕНТАРІ • 16

  • @rohitrox8
    @rohitrox8 4 роки тому +1

    I was literally suffering to understand spy by words. Thanks to you now!

  • @kekiir
    @kekiir Рік тому

    clear explanation!

  • @RamapatiMaurya
    @RamapatiMaurya 2 роки тому

    A person can learn more and put more attention if you show him/ her with error cases. Better to do like that way

  • @AhmadShahwaiz
    @AhmadShahwaiz 4 роки тому

    Beautifully explained

  • @shankars4281
    @shankars4281 2 роки тому

    So, when we use mock, we can't do below thing, since we it doesn't creates real object?
    List arrayList = mock(ArrayList.class);
    arrayList.add("sss");
    assertEquals(1,arrayList.size());

    • @thegamerz5034
      @thegamerz5034 2 роки тому +1

      Yes, when we use Mock, we can't do below thing. This is because to create a stub of a specific method of a class, the return type needs to be the same as the real implementation. List.add() returns a boolean and not a new list with the added object. This makes it so that we can't return a list with "sss" when we do .add for a Mocked arraylist. For example:
      //Spy:
      //Given
      List spyArrayList = Mockito.spy(new ArrayList());
      //When
      spyArrayList.add("sss");
      //Then
      assertEquals(1, spyArrayList.size());
      // This will return true.
      // For a mock, you need to DEFINE a stub
      // for each method. Because the logic is gone.
      // You have to specifically tell what outcome it should return for a specific input.
      //Mock:
      //Given
      List mockArrayList = Mockito.mock(ArrayList.class);
      List listWeWantNack = new ArrayList(List.of("sss"));
      //Next line doesn't work, since we can't specify a return type of arraylist,
      //because .add expects a boolean back.
      //This means we can't return an added list of stuff, because we can't override the .add method of list.
      //Mockito.when(mockArrayList.add("sss")).thenReturn(listWeWantNack);
      Sidenote:
      A Spy gives the same utility as the real implementation as you can see in the example, but you can specifically stub specific methods with a spy. This is quite powerful, since you don't have to specify what to return for every method of a mocked class, unlike a Mock where you have to specify what to return for EVERY method.
      This is why a Spy is called "partially mocked".

  • @umeshkumarroy5804
    @umeshkumarroy5804 3 роки тому

    Really Great

  • @MaggicBones
    @MaggicBones 3 роки тому

    A M A Z I N G !!!

  • @chaitanyabag7348
    @chaitanyabag7348 7 років тому

    Good and comprehensive video

  • @prasannakumarattuluri7650
    @prasannakumarattuluri7650 6 років тому

    its a good tutorial and clear one :)

  • @SanjeevSharma123
    @SanjeevSharma123 8 років тому

    great videos thank you :)

  • @maheshbeesetty5979
    @maheshbeesetty5979 5 років тому

    Great

  • @preethikashenoy
    @preethikashenoy 7 років тому

    Please add a tutorial on mocking SQLiteDatabase. Thanks in advance.

  • @ShahidKhan-qx5fh
    @ShahidKhan-qx5fh 7 років тому

    python add is so annoying ....