如何使用 MockK 模拟局部变量
How to mock local variables using MockK
我有以下简化代码
class Foo() {
suspend fun bar() {
val headers = AtomicReference(Metadata())
val metadata = headers.get()
if (metadata.keys().size > 0) { // I want it to return a value specified in the test file
// ...
}
}
我如何模拟 AtomicReference
或 Metadata
以便 headers.get().keys().size
returns 指定值而不是真实值?
您可以使用 Constructor Mocks 模拟 Metadata
的构造函数:
mockkConstructor(Metadata::class)
every { anyConstructed<Metadata>().keys() } returns mockedKeys
注意 keys 的 mockedKeys 是你的测试数据。
见https://mockk.io/#constructor-mocks
此外,尝试以不需要模拟任何构造函数的方式构建您的代码(例如使用控制反转),您会发现它在测试时会带来好处。
我有以下简化代码
class Foo() {
suspend fun bar() {
val headers = AtomicReference(Metadata())
val metadata = headers.get()
if (metadata.keys().size > 0) { // I want it to return a value specified in the test file
// ...
}
}
我如何模拟 AtomicReference
或 Metadata
以便 headers.get().keys().size
returns 指定值而不是真实值?
您可以使用 Constructor Mocks 模拟 Metadata
的构造函数:
mockkConstructor(Metadata::class)
every { anyConstructed<Metadata>().keys() } returns mockedKeys
注意 keys 的 mockedKeys 是你的测试数据。
见https://mockk.io/#constructor-mocks
此外,尝试以不需要模拟任何构造函数的方式构建您的代码(例如使用控制反转),您会发现它在测试时会带来好处。