2015-10-05 4 views
0
class SomeService{ 
    public String getValue(){ 
    return SomeUtil.generateValue(); 
    } 
} 

class SomeUtil{ 
    public static String generateValue() { 
     return "yahoo"; 
    } 
} 

Я хочу провести тестирование метода SomeService.getValue.Станочный метод класса Mocking Util с использованием gmock

Я пытаюсь следующее:

@Test 
void "getValue should return whatever util gives"(){ 
    def mockSomeUtil = mock(SomeUtil) 
    mockSomeUtil.static.generateValue().returns("blah") 
    play { 
     Assert.assertEquals(someService.getValue(), "blah") 
    } 
} 

Но она не как метод Util не на самом деле получить издевались.

Вопрос:

Как устройство может проверить мой метод сервиса?

+0

Ты расширение GMockTestCase? – jalopaba

+0

Я использую аннотацию @WithGMock –

ответ

0

Я сделал быстрый тест, и он работает без хлопот:

@Grapes([ 
    @Grab(group='org.gmock', module='gmock', version='0.8.3'), 
    @Grab(group='junit', module='junit', version='4.12') 
]) 

import org.gmock.* 
import org.junit.* 
import org.junit.runner.* 

class SomeService { 
    public String getValue(){ 
     return SomeUtil.generateValue() 
    } 
} 

class SomeUtil { 
    public static String generateValue() { 
     return "yahoo" 
    } 
} 

@WithGMock 
class DemoTest { 
    def someService = new SomeService() 

    @Test 
    void "getValue should return whatever util gives"() { 
     def mockSomeUtil = mock(SomeUtil) 
     mockSomeUtil.static.generateValue().returns("blah") 

     play { 
      Assert.assertEquals(someService.getValue(), "blah") 
     } 
    } 
} 

def result = JUnitCore.runClasses(DemoTest.class) 
assert result.failures.size() == 0 

Если вам нужно вызвать несколько раз обслуживания, вам может понадобиться stub, то есть:

mockSomeUtil.static.generateValue().returns("blah").stub() 
+0

Единственная разница, которую я вижу, это то, что я запускаю ее с помощью TestNG, но я не думаю, что она должна иметь значение. –

+0

Хорошо ... Итак, как только я извлекаю сервис и использую классы в отдельных файлах, это начинает проваливаться. Это возвращает меня к тому же вопросу –