class SomeService{
public String getValue(){
return SomeUtil.generateValue();
}
}
class SomeUtil{
public static String generateValue() {
return "yahoo";
}
}
我想对SomeService.getValue
方法进行单元测试。
我正在尝试以下方法:
@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 :(得分: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()