我有一个与我定义的原始数据存储一起使用的存储库类,该类与首选项数据存储等效。我的原型文件看起来像这样:
syntax = "proto3";
option java_package = "PACKAGE_NAME";
option java_multiple_files = true;
message SomeItem {
string itemId = 1;
string itemDescription = 2;
}
message ListOfItems {
repeated SomeItem items = 1;
}
在我的应用程序中,我使用全局上下文对象实例化 Proto DataStore,如下所示:
private val Context.someItemsStore: DataStore<ListOfItems> by dataStore(
fileName = DATA_STORE_FILE_NAME,
serializer = SerializerClass,
)
我不明白的是如何测试我的数据存储而不嘲笑它。 IE。查看实际值被设置/删除/等。
我已阅读这篇文章
,其中展示了如何使用 Preference DataStore 来做到这一点,并隐约暗示可以使用 Proto DataStore 来完成同样的事情。private val testDataStore: DataStore<Preferences> =
PreferenceDataStoreFactory.create(
scope = testCoroutineScope,
produceFile = { testContext.preferencesDataStoreFile(TEST_DATASTORE_NAME) }
)
上面是实例化 Preference DataStore 的逻辑片段,但我找不到在测试类内实例化 Proto DataStore 的等效逻辑。 我也使用 RoboElectric 看到过
这个问题。
我是否应该在测试中实例化我的 Proto DataStore,就像在应用程序内部进行实例化一样?如果是这样,当我尝试这样做时,我必须使用 ApplicationProvider.getApplicationContext()
知道如何做到这一点吗?
在网上搜索并修改一些东西后,我找到了一个可行的解决方案。所以,为了后代,我把它放在这里。