Mockito当带有共享的质量值的含量



我第一次深入研究了与Mockito进行单位测试,所以请忍受我。我正在研究此测试:

class PasswordStateManagerTest {
    private lateinit var passwordStateManager: PasswordStateManager
    @MockK
    private lateinit var mockContext: Context
    @MockK
    private lateinit var mockSharedPreferences: SharedPreferences
    @Before
    fun setup() {
        MockKAnnotations.init(this, true)
        every{ mockContext.getApplicationSharedPreferences() } returns mockSharedPreferences
        // this is the line that won't compile
Mockito.when(mockSharedPreferences.getBoolean("save_password", false)
    )
                    .thenReturn(true)
        passwordStateManager = PasswordStateManager(mockSharedPreferences)
    }    
}

何时不会汇编。它期望我试图在.thenReturn上执行一个打开的括号{字符。当我阅读文档时,在此语句中没有任何开放式括号的地方,所以我必须离开轨道。

这是要测试的类的初始方法的一部分,这是对测试中的全部延伸线的需求:

init {
    willSavePassword = prefs.getBoolean("save_password", false)
}

感谢您的任何帮助(以及我迅速提高速度的耐心!)。

这是因为when是Kotlin中的保留关键字,因此编译器将其解释为when语句的开始。例如:

when (value) {
    "value1" -> // do thing
}

为了解决此问题,您可以用回头逃脱方法名称:

Mockito.`when`(mockSharedPreferences.getBoolean("save_password", false)).thenReturn(true);

或,由于您无论如何都使用Mockk,只需切换到另一个every

every { mockSharedPreferences.getBoolean("save_password", false) } returns true

相关内容

  • 没有找到相关文章

最新更新