2015-11-05 2 views
0

Я получаю такую ​​AssertionError:EasyMock: AssertionError на сравнении объекта с его клоном

java.lang.AssertionError: 
    Unexpected method call ICustomerDAO.getVersionStamps(-1, ["CustomerData", "UserData"], EasyMock for interface java.sql.Connection): 
    ICustomerDAO.getVersionStamps(-1, ["CustomerData", "UserData"], EasyMock for interface java.sql.Connection): expected: 1, actual: 0 
    at org.easymock.internal.MockInvocationHandler.invoke(MockInvocationHandler.java:44) 
    at org.easymock.internal.ObjectMethodsFilter.invoke(ObjectMethodsFilter.java:94) 
    at com.sun.proxy.$Proxy3.getVersionStamps(Unknown Source) 
    at com.mgmt.ConfigClient.getRequestedVersions(ConfigClient.java:200) 
    at com.mgmt.ConfigClientTest.testGetRequestedVersions(ConfigClientTest.java:329) 

Вот код теста:

@Test 
public void testGetRequestedVersions() { 
    ConfigClient client = new ConfigClient(); 
    client.dao = EasyMock.createStrictMock(ICustomerDAO.class); 
    Connection connection = EasyMock.createStrictMock(Connection.class); 
    long[] versions = {34, 12}; 
    EasyMock.expect(client.dao.getVersionStamps(-1, ConfigFilesRegenTask.getRequestedVersions(), connection)).andReturn(versions); 
    EasyMock.replay(client.dao); 
    ConfigToken token = client.getRequestedVersions(connection); 
    EasyMock.verify(client.dao); 
    assertEquals("Wrong customer version", versions[0], token.getCustomerVersion()); 
} 

ConfigClient класс:

public ConfigToken getRequestedVersions(Connection connection) { 
    final ConfigToken token = new ConfigToken(-1, -1); 
    long[] requestedVersions = dao.getVersionStamps(-1, ConfigFilesRegenTask.getRequestedVersions(), connection); 
    token.setCustomerVersion(requestedVersions[0]); 
    return token; 
} 

И ConfigFilesRegenTask класс содержит метод get, который возвращает клон существующего массива:

public static String[] getRequestedVersions() { 
    return REQUESTED_VERSIONS.clone(); 
} 

ошибка утверждение происходит только тогда, когда я возвращаю REQUESTED_VERSIONS клон массива. Как я могу обойти это?

ответ

1

Немного трудно следовать вашему примеру, но я полагаю, что вместо стандартного сочетания вам необходимо использовать Array Equality , который проверяет .equals(), что не так полезно для массивов.

Попробуйте изменить ваши ожидания на:

EasyMock.expect(client.dao.getVersionStamps(eq(-1), aryEq(ConfigFilesRegenTask.getRequestedVersions()), eq(connection))).andReturn(versions); 
+1

Спасибо, человек! Это сработало. –

Смежные вопросы