logo

Методи на Mockito

Рамката Mockito предоставя различни методи като mock(), verify(), when() и т.н., използвани за тестване на Java приложения. Използването на тези предварително дефинирани методи прави тестването много лесно.

Краткото описание на методите Mockito е дадено по-долу:

равенство на java обекти

Mockito mock() метод

Използва се за създаване на фалшиви обекти от даден клас или интерфейс. Mockito съдържа пет макет() методи с различни аргументи. Когато не сме присвоили нищо на mocks, те ще върнат стойности по подразбиране. И петте метода изпълняват една и съща функция на подигравка на обектите.

Следват методите mock() с различни параметри:

    метод mock() с клас:Използва се за създаване на фалшиви обекти от конкретен клас или интерфейс. Той приема име на клас или интерфейс като параметър.
    Синтаксис: макет (клас classToMock)метод mock() с отговор:Използва се за създаване на фалшиви обекти от клас или интерфейс със специфична процедура. Това е усъвършенстван макетен метод, който може да се използва при работа с наследени системи. Той приема Answer като параметър заедно с името на класа или интерфейса. Отговорът е изброяване на предварително конфигурирани фалшиви отговори.
    Синтаксис: mock(клас classToMock, отговор по подразбиранеAnswer)метод mock() с MockSettings:Използва се за създаване на фалшиви обекти с някои нестандартни настройки. Той приема MockSettings като допълнителен параметър за настройка заедно с името на класа или интерфейса. MockSettings позволява създаването на фалшиви обекти с допълнителни настройки.
    Синтаксис: макет (клас classToMock, MockSettings mockSettings)метод mock() с ReturnValues:Позволява създаването на фалшиви обекти от даден клас или интерфейс. Сега той е отхвърлен, тъй като ReturnValues ​​се заменят с Answer.
    Синтаксис: mock(Class classToMock, ReturnValues ​​returnValues)метод mock() със String:Използва се за създаване на фалшиви обекти чрез указване на фалшивите имена. При отстраняване на грешки именуването на фалшиви обекти може да бъде полезно, докато използването с голям и сложен код е лош избор.
    Синтаксис: макет (клас classToMock, име на низ)

Следващият кодов фрагмент показва как да използвате макет() метод:

 ToDoService doService = mock(ToDoService.class); 

Метод Mockito when().

Позволява методи за зарязване. Трябва да се използва, когато искаме да се подиграваме, за да върнем конкретни стойности, когато се извикват определени методи. С прости думи, ' Кога методът XYZ() се извиква, тогава върнете ABC.' Използва се най-вече, когато има някакво условие за изпълнение.

Синтаксис: when(T methodCall)

Следният кодов фрагмент показва как да използвате метода when():

 when(mock.someCode ()).thenReturn(5); 

В горния код, thenReturn() се използва предимно с кога() метод.

Mockito verify() метод

The потвърди () метод се използва за проверка дали някои посочени методи се извикват или не. С прости думи, той валидира определено поведение, което се е случило веднъж в теста. Използва се в долната част на кода за тестване, за да се гарантира, че дефинираните методи се извикват.

Рамката Mockito следи всички извиквания на метода с техните параметри за подигравателни обекти. След подигравка можем да проверим дали определените условия са изпълнени или не, като използваме метода verify(). Този тип тестване понякога е известно като поведенчески тестове. Той проверява дали даден метод е извикан с правилните параметри, вместо да проверява резултата от извикване на метод.

Методът verify() също се използва за тестване на броя извиквания. Така че можем да тестваме точния брой извиквания, като използваме пъти метод, поне веднъж метод, и най-много метод за подиграван метод.

В класа Mockito има два вида методи verify(), които са дадени по-долу:

    метод verify():Той проверява, че определено поведение се е случило веднъж.
    Синтаксис: потвърди (T mock)метод verify() с VerificationMode:Той проверява, че някакво поведение се е случило поне веднъж, точен брой пъти или никога.
    Синтаксис: потвърди (T mock, режим VerificationMode)

Метод на Mockito spy().

Mockito предоставя метод за частично имитиране на обект, който е известен като шпионин метод. Когато използвате шпионския метод, съществува реален обект и се създават шпиони или мъничета от този реален обект. Ако не заглушим метод с помощта на spy, той ще извика поведението на истинския метод. Основната функция на метода spy() е, че той заменя специфичните методи на реалния обект. Една от функциите на метода spy() е, че проверява извикването на определен метод.

В класа Mockito има два вида spy() методи:

    spy() метод:Създава шпионка на истинския обект. Шпионският метод извиква истинските методи, освен ако не са заглушени. Трябва да използваме истинските шпиони внимателно и от време на време, например, когато се занимаваме с наследения код.
    Синтаксис: шпионин (T обект)метод spy() с клас:Той създава шпионски обект на базата на клас вместо обект. Методът spy(T object) е особено полезен за шпиониране на абстрактни класове, защото те не могат да бъдат инстанцирани.
    Синтаксис: шпионин (клас classToSpy)

Следващият кодов фрагмент показва как да използвате метода spy():

 List spyArrayList = spy(ArrayList.class); 

Метод Mockito reset().

Методът Mockito reset() се използва за нулиране на макетите. Използва се главно за работа с контейнерно инжектирани макети. Обикновено методът reset() води до дълъг код и лоши тестове. По-добре е да създавате нови макети, вместо да използвате метода reset(). Ето защо методът reset() рядко се използва при тестване.

Сигнатурата на метода reset() е:

разлика между двоично дърво и двоично дърво за търсене
 public static void reset(T ... mocks) { MOCKITO_CORE.reset(mocks); } 

Mockito verifyNoMoreInteractions() метод

Използва се за проверка дали някой от дадените макети има непроверени взаимодействия. Можем да използваме този метод, след като проверим всички макети, за да сме сигурни, че нищо друго не е било извикано върху макетите. Той също така открива непроверените извиквания, които се случват преди тестовия метод, например в метода setup(), @Before или конструктора. Това е незадължителен метод и не е необходимо да го използваме във всеки тест.

Сигнатурата на метода verifyNoMoreInteractions() е:

 public static void verifyNoMoreInteractions(Object... mocks) { MOCKITO_CORE.verifyNoMoreInteractions(mocks); } 

Mockito verifyZeroInteractions() метод

Той проверява дали не е настъпило взаимодействие с дадените макети. Той също така открива извикванията, които са възникнали преди тестовия метод, например в метода setup(), @Before или конструктора.

Сигнатурата на метода verifyZeroInteractions() е:

 public static void verifyZeroInteractions(Object... mocks) { MOCKITO_CORE.verifyNoMoreInteractions(mocks); } 

Метод на Mockito doThrow().

Използва се, когато се заглушава void метод за хвърляне на изключение. Той създава нов екземпляр на изключение за всяко извикване на метод. В класа Mockito има два вида методи doThrow() с различни параметри, както е показано по-долу:

    doThrow() метод с Throwable:Този метод се използва, когато искаме да заглушим void метод с изключение. Синтаксис: doThrow (може да се хвърли, за да бъде хвърлен)
    Сигнатурата на метода doThrow() е:
 public static Stubber doThrow(Throwable toBeThrown) { return MOCKITO_CORE.doAnswer(new ThrowsException(toBeThrown)); } 
    doThrow() метод с клас:Този метод се използва, когато искаме да заглушим метод void, за да хвърлим изключение на определен клас.
    Синтаксис: doThrow(Клас toBeThrown)
    Сигнатурата на метода doThrow() е:
 public static Stubber doThrow(Class toBeThrown) { return MOCKITO_CORE.doAnswer(new ThrowsExceptionClass(toBeThrown)); } 

Метод на Mockito doCallRealMethod().

Използва се, когато искаме да извикаме реалната реализация на метод. С други думи, използва се за създаване на частични макети на обект. Използва се в редки ситуации, като например за извикване на реалните методи. Той е подобен на метода spy() и единствената разлика е, че води до сложен код.

Сигнатурата на метода doCallRealMethod() е:

 public static Stubber doCallRealMethod() { return MOCKITO_CORE.doAnswer(new CallsRealMethods()); } 

Метод на Mockito doAnswer().

Използва се, когато искаме да заглушим void метод с общ тип Answer. Сигнатурата на метода doAnswer() е:

 public static Stubber doAnswer(Answer answer) { return MOCKITO_CORE.doAnswer(answer); } 

Метод на Mockito doNothing().

Използва се за настройка на void методи да не правят нищо. Методът doNothing() се използва в редки ситуации. По подразбиране методите void на фиктивни екземпляри не правят нищо, т.е. не се изпълнява задача.

Сигнатурата на метода doNothing() е:

 public static Stubber doNothing() { return MOCKITO_CORE.doAnswer(new DoesNothing()); } 

Метод на Mockito doReturn().

Използва се в онези редки случаи, когато не можем да използваме Mockito.when(object). Методът Mockito.when(object) винаги се предлага за заглушаване, тъй като е безопасен за типа аргумент и е по-четлив в сравнение с метода doReturn().

Сигнатурата на метода doReturn() е:

 public static Stubber doReturn(Object toBeReturned) { return MOCKITO_CORE.doAnswer(new Returns(toBeReturned)); } 

Метод Mockito inOrder().

Използва се за създаване на обекти, които позволяват проверка на макетите в определен ред. Проверката, извършена по ред, е по-гъвкава, тъй като не е необходимо да проверяваме всички взаимодействия. Трябва да проверим само онези взаимодействия, които се интересуват от тестване (по ред). Можем също да използваме метода inOrder(), за да създадем inOrder обект, предаващ подигравки, които са подходящи за проверка в ред.

Сигнатурата на метода Mockito.inOrder() е:

 public static InOrder inOrder(Object... mocks) { return MOCKITO_CORE.inOrder(mocks); } 

Метод Mockito ignoreStubs().

Използва се за игнориране на заглушените методи на дадени макети за проверка. Полезно е с методи verifyNoMoreInteraction() или проверка inOrder(). Също така помага за избягване на излишна проверка на прекъснати повиквания.

Сигнатурата на метода ignoreStubs() е:

 public static Object[] ignoreStubs(Object... mocks) { return MOCKITO_CORE.ignoreStubs(mocks); } 

Метод Mockito times().

Използва се за проверка на точния брой извиквания на метод, което означава, че декларира колко пъти е извикан метод. Сигнатурата на метода times() е:

 public static VerificationMode times(int wantedNumberOfInvocations) { return VerificationModeFactory.times(wantedNumberOfInvocations); } 

Mockito never() метод

Използва се за проверка дали взаимодействието не се е случило. Сигнатурата на метода never() е:

 public static VerificationMode never() { return times(0); } 

Метод Mockito atLeastOnce().

Използва се за проверка на извикването поне веднъж, което означава, че методът трябва да бъде извикан поне веднъж.

Сигнатурата на метода atLeastOnce() е:

низови функции в java
 public static VerificationMode atLeastOnce() { return VerificationModeFactory.atLeastOnce(); } 

Метод Mockito atLeast().

Използва се за проверка на извикването поне x брой пъти. Например даден atLeast(3) означава, че методът ще се извика минимум три пъти.

Сигнатурата на метода atLeast() е:

 public static VerificationMode atLeast(int minNumberOfInvocations) { return VerificationModeFactory.atLeast(minNumberOfInvocations); } 

Метод Mockito atMost().

Използва се за проверка на извикването най-много x брой пъти. Например дадено atMost(3) означава, че методът ще се извика максимум три пъти.

Сигнатурата на метода atMost() е:

 public static VerificationMode atMost(int maxNumberOfInvocations) { return VerificationModeFactory.atMost(maxNumberOfInvocations); } 

Mockito calls() метод

Позволява не-алчна проверка в ред. Може да се използва само с метода за проверка inOrder(). Например, inOrder.verify(mock, calls(3)).xyzMethod('...');

Сигнатурата на метода calls() е:

 public static VerificationMode calls( int wantedNumberOfInvocations ){ return VerificationModeFactory.calls( wantedNumberOfInvocations ); } 

Метод Mockito only().

Той проверява дали дадения метод е единственият извикан метод. Сигнатурата на метода only() е:

sanjay dutt и
 public static VerificationMode only() { return VerificationModeFactory.only(); } 

Метод Mockito timeout().

Това позволява на Mockito да извърши проверка с изчакване. Той инструктира проверката да изчака определен период от време за конкретно взаимодействие, вместо да се провали веднага. Може да е полезно за тестване в съществуващи ситуации.

Методът timeout() се различава от метода after(), тъй като методът after() изчаква пълния период, освен ако крайният резултат не е деклариран, докато методът timeout() ще спре веднага след като проверката премине. Рядко се използва при тестване.

Сигнатурата на метода timeout() е:

 public static VerificationWithTimeout timeout(long millis) { return new Timeout(millis, VerificationModeFactory.times(1)); } 

Метод Mockito after().

Позволява на Mockito да проверява за определен период от време. Вече обсъдихме, че методът after() се различава от метода timeout().

Сигнатурата на метода after() е:

 public static VerificationAfterDelay after(long millis) { return new After(millis, VerificationModeFactory.times(1)); } 

Метод Mockito validateMockitoUsage().

Използва се за изрично валидиране на състоянието на рамката за откриване на невалидна употреба на рамката Mockito. Това е незадължителна функция на Mockito, защото потвърждава употребата през цялото време. Както вграденият бегач (MockitoJUnitRunner), така и правилото (MockitoRule) извикват метода validateMockitoUsage() след всеки тестов метод.

Сигнатурата на метода validateMockitoUsage() е:

 public static void validateMockitoUsage() { MOCKITO_CORE.validateMockitoUsage(); } 

Mockito withSettings() метод

Използва се за създаване на макети с допълнителни настройки за макети. Трябва да се използва от време на време при тестване. Вместо да използвате метода withSettings(), създайте прости тестове, като използвате прости макети. Основните причини за използването на MockSettings са

  • С помощта на MockSetting можем лесно да добавим други фиктивни настройки, когато е необходимо.
  • Той комбинира различни фалшиви настройки, без да обърква кода.

Сигнатурата на метода withSettings() е:

 public static MockSettings withSettings() { return new MockSettingsImpl().defaultAnswer(RETURNS_DEFAULTS); }