Автор оригинала: Pankaj Kumar.
Метод EasyMock Verify используется для проверки того, что вызываются все методы с заглушкой и нет неожиданных вызовов для издевательского объекта.
Проверка EasyMock
Метод EasyMock verify() имеет тот же эффект, что и вызов проверка записи(объект)
и проверка неожиданных вызовов(Объект)
методов.
Давайте рассмотрим простой пример метода EasyMock verify ().
package com.journaldev.easymock; import static org.easymock.EasyMock.expect; import static org.easymock.EasyMock.mock; import static org.easymock.EasyMock.replay; import static org.easymock.EasyMock.verify; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertTrue; import java.util.ArrayList; import org.junit.jupiter.api.Test; public class EasyMockVerifyExample { @Test public void test() { ArrayListmockList = mock(ArrayList.class); expect(mockList.add(10)).andReturn(true); expect(mockList.add(20)).andReturn(true); expect(mockList.size()).andReturn(2); expect(mockList.get(0)).andReturn(10); replay(mockList); mockList.add(10); mockList.add(20); assertTrue(mockList.get(0) == 10); assertEquals(mockList.size(), 2); verify(mockList); } }
Обратите внимание, что все заглушенные методы вызываются после метода replay ()
.
Что, если мы не вызовем заглушенный метод?
Это вызовет ошибку утверждения. Например, если я прокомментирую макет List.add(10)
оператор, о приведенной ниже трассировке стека исключений сообщит JUnit .
java.lang.AssertionError: Expectation failure on verify: ArrayList.add(10 (int)): expected: 1, actual: 0 at org.easymock.internal.MocksControl.verify(MocksControl.java:284) at org.easymock.EasyMock.verify(EasyMock.java:2041) at com.journaldev.easymock.EasyMockVerifyExample.test(EasyMockVerifyExample.java:31)
EasyMock проверяет неожиданные звонки с помощью хорошего макета
Если издевательский объект является хорошим макетом, то метод verify() не выдаст ошибку при неожиданных вызовах метода. Однако он выдаст ошибку, если не будут вызваны заглушенные вызовы.
Приведенный ниже фрагмент кода для теста будет окрашен в зеленый цвет, потому что издевательский объект-это хороший макет.
ArrayListmockList = mock(MockType.NICE, ArrayList.class); replay(mockList); mockList.add(10); //unexpected method call verify(mockList);
Сложный пример проверки EasyMock()
Мы можем переместить метод EasyMock verify() в методы @After, чтобы убедиться, что вызывались все заглушенные методы.
package com.journaldev.easymock; import static org.easymock.EasyMock.expect; import static org.easymock.EasyMock.mock; import static org.easymock.EasyMock.replay; import static org.easymock.EasyMock.verify; import static org.junit.jupiter.api.Assertions.assertTrue; import java.util.ArrayList; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; public class EasyMockVerifyRealExample { ArrayListmockList; @BeforeEach public void setup() { mockList = mock(ArrayList.class); } @Test public void test() { expect(mockList.add(10)).andReturn(true); expect(mockList.get(0)).andReturn(10); replay(mockList); mockList.add(10); assertTrue(mockList.get(0) == 10); } @AfterEach public void teardown() { verify(mockList); } }
Резюме
Метод EasyMock verify() используется для проверки того, что используются все методы с заглушкой и нет неожиданных вызовов. Поведение при неожиданных вызовах меняется для хороших макетных объектов, где это не вызывает никаких ошибок. Метод EasyMock verify() очень похож на метод Mockito verify ().