当前位置: 首页 > 面试题库 >

可以在Kotlin中使用Mockito吗?

左仰岳
2023-03-14
问题内容

我面临的问题是Matchers.anyObject()回报null。当用于仅接受非空类型的模拟方法时,它将导致引发“应该不为空”异常。

`when`(mockedBackend.login(anyObject())).thenAnswer { invocationOnMock -> someResponse }

模拟方法:

public open fun login(userCredentials: UserCredentials): Response

问题答案:

有两种可能的解决方法

private fun <T> anyObject(): T {
    Mockito.anyObject<T>()
    return uninitialized()
}

private fun <T> uninitialized(): T = null as T

@Test
fun myTest() {
    `when`(mockedBackend).login(anyObject())).thenAnswer { ... }
}

另一个解决方法是

private fun <T> anyObject(): T {
    return Mockito.anyObject<T>()
}

@Test
fun myTest() {
    `when`(mockedBackend).login(anyObject())).thenAnswer { ... }
}

这是有关此主题的更多讨论,其中首先提出了解决方法。



 类似资料:
  • 我开始了一个新的Kotlin项目,我想使用arrow-kt核心库与Quarkus(1.12.2)结合使用。我想在GRAALVM中使用Quarkus的本机编译特性。我的第一个想法是arrow是一个没有反射的简单lib,但后来我读到了。既然GraalVm在运行时在本机可执行文件中存在反射问题,那会不会是Arrow的问题呢?如果是一个问题,我是否可以通过简单地避开Arrow的一些特性来绕过问题? 我知道

  • 给出静态编程语言中的编译错误(意外标记(使用';'分隔同一行上的表达式))

  • 所以在用kotlin类做了大量的试验和错误之后,我发现同样的代码在java中是可测试的,但在kotlin中是不可测试的。 这会导致:org . mock ITO . exceptions . mis using . missingmethodinvocationexception:when()需要一个必须是“模拟上的方法调用”的参数。比如:when(mock.getArticles())。然后返回

  • 我试图将代码Kotlin转换为java,但在java中找不到run函数。这是Kotlin代码: 我使用resumeArElementsTask,比如 当我转换为java时 如何在java中使用run函数并将此代码转换为java 谢谢

  • 问题内容: 我知道这不是应该做的事情,但是有没有办法使用斜线字符来分隔Linux中文件名中的目录? 问题答案: 答案是,除非文件系统有错误,否则您将无法这样做。原因如下: 有一个系统调用,用于重命名名为的文件: 当系统调用被调用时,它将对名称进行路径查找()。继续跟踪,我们可以看到: 此代码适用于任何文件系统。什么意思 这意味着,如果您尝试使用传统方式将带有实际字符的参数作为文件名传递,它将无法执