再次,如何将多个嘲笑OngoingStubbing与逻辑“和” /“或”组合?

时间:2019-03-26 05:14:02

标签: java mockito

在像这样的模拟测试时,我做了一些安排:

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/

1 个答案:

答案 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;
});