在像这样的模拟测试时,我做了一些安排:
COUNT
他们确实工作了,但是代码是如此冗长。我想要 结合以上安排,进行更清洁的测试。像这样:
SELECT
TeamID,
Game,
WL,
COUNT(CASE WHEN WL = 'W' THEN 1 END) OVER (PARTITION BY TeamId ORDER BY Game) /
COUNT(*) OVER (PARTITION BY TeamId) win_pct
FROM MatchDetails2017
ORDER BY
TeamID,
Game;
我在这里找到了一些有关在.thenReturn中组合功能的代码,但这并不是我真正需要的。 https://jsfiddle.net/g7nkfpca/
答案 0 :(得分:0)
一种方法可能是为模拟定义自己的默认行为:
List<String> methodsToMock =
Arrays.asList("highestRatedMovies", "newestMovies", "popularMovies");
mTmdbWebService = mock(TmdbWebService.class, invocationOnMock -> {
Method mockedMethod = invocationOnMock.getMethod();
if (methodsToMock.contains(mockedMethod.getName()) &&
mockedMethod.getParameterCount() == 0 &&
mockedMethod.getReturnType().equals(String.class)) {
return "abc";
}
return null;
});