微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

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

我将 new_l=[] def flatten(lists): for i in lists: if isinstance(i,list): flatten(i) else: new_l.append(i) return new_l list2d = [1,2,[3,4],5,[6,7,[8,9,10]]] print(flatten(list2d)) EasyMock 一起使用。它运行良好,但是当我需要模拟 3rd 方库调用并且我客观上不需要/必须验证第一个参数时,我遇到了一个案例,所以我想使用这种结构:

Kotlin

我收到 EasyMock.expect(bucket.putObject(EasyMock.anyString(),message)).andReturn(PutObjectResult()) 指针异常。

java.lang.NullPointerException: anyString() 不能为 null

null 下面有这个实现的原因:

EasyMock

我查看了 Mockito 中可能的解决方法,但对我来说没有任何效果

有没有办法克服 public static String anyString() { return (String)anyObject(); } public static <T> T anyObject(Class<T> clazz) { reportMatcher(Any.ANY); return null; } 带来的不便,并且不会收到 EasyMock 异常?

解决方法

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

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

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

看看它是否有效。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。