如何解决 Kotlin 中的 EasyMock anyString() NullPointerException?

How to solve EasyMock anyString() NullPointerException in Kotlin?

我正在使用 EasyMockKotlin。它运作良好,但我遇到了一个情况,当我需要模拟第 3 方库调用时,我没有客观地 need/have 来验证第一个参数,所以我想使用这个结构:

EasyMock.expect(bucket.putObject(EasyMock.anyString(), message)).andReturn(PutObjectResult())

我收到 null 指针异常。

java.lang.NullPointerException: anyString() must not be null

之所以在EasyMock下面有这个实现:

public static String anyString() {
    return (String)anyObject();
}

public static <T> T anyObject(Class<T> clazz) {
    reportMatcher(Any.ANY);
    return null;
}

我查看了 中可能的解决方法,但这些对我都不起作用。

有没有办法克服 EasyMock 带来的不便,并且不会出现 NullPointer 异常?

我不是 Kotlin 专家。我的第一个想法是 bucket.putObject 实际上并没有被嘲笑。但这可能是因为 anyObject() 只是 returns null 而 Kotlin 中的 null 验证导致了这一点。

您可以创建自己的匹配器。

public static String anyString() {
    EasyMock.reportMatcher(Any.ANY);
    return "";
}

看看它是否有效。