我正在进入一个使用 SharedPreferences 进行数据持久性的遗留代码库。我想测试保存/检索一个值,使用MockK进行模拟。但是,此单元测试中的断言永远不会通过。就好像 SharedPrefs 在测试中没有正确存储:
class MyProfilePrefsTest {
private lateinit var myProfilePrefs: ProfilePrefs
@RelaxedMockK private lateinit var mockSharedPrefs: SharedPreferences
@RelaxedMockK private lateinit var context: Context
@Before
fun setup() {
MockKAnnotations.init(this)
val sharedPreferences = mockk<SharedPreferences>()
every { sharedPreferences.edit() } returns (mockk())
myProfilePrefs = ProfilePrefs(context, sharedPreferences)
mockStatic(DeviceInfo::class)
every { DeviceInfo.serialNumber() } returns "fake_serial"
}
@Test
fun `Saving correct cellular download pref for device id`() {
// Arrange
val isEnabled = true
// Act
myProfilePrefs.setCellularDownloadingEnabled(isEnabled)
// Assert
assertTrue(myProfilePrefs.getCellularDownloadingEnabled())
}}
有人知道如何对 SharedPrefs 进行单元测试吗?