Как смоделировать драйвер appium (ios / android) с помощью easymock? - PullRequest
0 голосов
/ 05 декабря 2018

Пример кода, который я пытался смоделировать драйвером IOS для Appium, он дает исключение Null> Pointer

Инициализация драйвера и объекта AndroidDriver

Driver driver;
AndroidDriver<AndroidElement> androidDriver;

@SuppressWarnings({ "unchecked" })
@Test
public void getLogAndroid_happyPath() throws Exception{
>Setting logs to mock return type

List<LogEntry> setLogs = new ArrayList<LogEntry>();
setLogs.add(new LogEntry(Level.ALL, 0, "logs"));
driver = new Driver();

MockingДрайвер Android с Nice Mock, который может привести к пустому вводу здесь кода> а также типы возврата

androidDriver = EasyMock.createNiceMock(AndroidDriver.class);
driver.setAndroidDriver(androidDriver);

Вызов объекта EasyMock

EasyMock.expect(androidDriver.manage().logs().get(EasyMock.anyString()).getAll()).andReturn(setLogs);
EasyMock.replay(androidDriver);
try {
>Asserting mocked return type               

  assertTrue(driver.getLog("getLog",5000).contains(setLogs));       
} catch (Exception e) {
  e.printStackTrace();
}

>Verify EasyMock Object

EasyMock.verify(androidDriver);
EasyMock.reset(androidDriver);
}

1 Ответ

0 голосов
/ 09 декабря 2018

Вы не можете сделать EasyMock.expect(androidDriver.manage().logs().get(EasyMock.anyString()).getAll()).

Даже если androidDrive - это макет, это не заставит androidDriver.manage() вернуть макет.Он вернет ноль.Итак, у вас, вероятно, есть NPE прямо сейчас.

Итак, вам нужно что-то вроде (я также использую более современный синтаксис):

androidDriver = niceMock(AndroidDriver.class);
what_is_returned_by_manage = mock(WhatIsReturnedByManage.class);
what_is_returned_by_logs = mock(WhatIsReturnedByLogs.class);
what_is_returned_by_get = mock(WhatIsReturnedByGet.class);
expect(androidDriver.manage()).andReturn(what_is_returned_by_manage);
expect(what_is_returned_by_manage.logs()).andReturn(what_is_returned_by_logs);
expect(what_is_returned_by_logs.get(anyString())).andReturn(what_is_returned_by_get);
expect(what_is_returned_by_get.getAll()).andReturn(setLogs);

Но на самом деле я бы никогда не кодировал это,Я бы добавил getAllLogs на what_is_returned_by_manage или что-то в этом роде.

...