我以前曾使用过java和junit的Powermock。我已经成功地模拟了静态方法,如下例所示:
@PrepareForTest({ TimeHelper.class, MainApp.class })
@RunWith(PowerMockRunner.class)
public class TestSuite {
@Before
public void setUp() throws IOException {
PowerMockito.mockStatic(TimeHelper.class);
Mockito.doReturn("2015-01-01 00:00:00").when(TimeHelper.getUnixTime());
}
}
但是,翻译成scala时似乎不起作用。请注意,我们在下面调用的'getUnixTime'方法也在scala中实现。
@PrepareForTest(Array( classOf[TimeHelper], classOf[MainApp] ))
@RunWith(classOf[PowerMockRunner])
class TestSuite {
@Before
def setUp() {
PowerMockito.mockStatic(classOf[TimeHelper]);
Mockito.doReturn("2015-01-01 00:00:00").when(TimeHelper.getUnixTime());
}
}
当运行在scala中实现的测试时,我似乎得到了测试返回的值,而不是模拟的值。有人能指出我在这里缺少的东西吗?
编辑:这是scala中getUnixTime函数的签名:
object TimeHelper{
def getUnixTime(): String = {
//logic
}
}