2015-12-30 10 views
1

код ссылкиВ моей EasyMock У меня есть ошибка от объекта внутри метода тестового класса

@Test 
public void testXClass(){ 
    XClass xclass = new XClass(); 
    UriBuilder uriBuilder = EasyMock.createMock(UriBuilder.class); 
    EasyMock.expect(uriBuilder.fromUri(EasyMock.anyObject(String.class))).andReturn(dummyUriBuilder()).anyTimes(); 
    //EasyMock.replay(uriBuilder); 
    EasyMock.expect(xclass.xMethod(EasyMock.anyObject(String.class))).andReturn("Done").anyTimes(); 
    String x = xclass.xMethod(EasyMock.anyObject(String.class)); 
} 

private UriBuilder dummyUriBuilder() { 
    UriBuilder uriBuilder = UriBuilder.fromUri("https://dev.x-service.com"); 
    uriBuilder.path("/x1/"); 
    return uriBuilder; 
} 

class XClass { 

    public String xMethod(String x) { 
     ... 
     UriBuilder uriBuilder = UriBuilder.fromUri("https://dev.x-service.com"); 
     uriBuilder.path("/x1/"); 
     ... 
    } 
} 

Я получаю сообщение об ошибке на линии

UriBuilder uriBuilder = UriBuilder.fromUri("https://dev.x-service.com"); 

StackTrace:

java.lang.IllegalArgumentException at 
    org.apache.cxf.jaxrs.impl.UriBuilderImpl.uri(UriBuilderImpl.java:888) at 
    javax.ws.rs.core.UriBuilder.fromUri(UriBuilder.java:119) 

Как мне издеваться над этим материалом UriBuilder? Я думаю, что делаю это неправильно при настройке EasyMock.

ответ

0

Вам необходимо высмеять статический метод UriBuilder.fromUri. Это невозможно сделать с помощью EasyMock. Для этого вам нужно PowerMock.

+0

Спасибо, я добавил это после того, как вы предложили, \t \t PowerMock.mockStatic (UriBuilder.class); \t \t EasyMock.expect (UriBuilder.fromUri (EasyMock.anyObject (String.class))) иReturn (dummyUriBuilder()); \t \t PowerMock.replay (UriBuilder.class); Получение такой же ошибки – kshah

+0

Вы используете «PowerMockRule» (или «PowerMockRunner'): https://github.com/jayway/powermock/wiki/PowerMockRule –

+0

PowerMockRule и PowerMockRunner с JUnit, я использую TestNg, мой тест case extends org.powermock.modules.testng.PowerMockTestCase – kshah