reflection - Kotlin:在测试中访问私有变量
问题描述
我有一个包含以下属性的 Kotlin 类
private var items: List<Item> = listOf()
在我的测试中,我现在想检查列表中是否有项目。我尝试通过反射来做到这一点:
val field = sut::class.members.findLast { f -> f.name.equals("items") }
我现在得到一个 KCallable<*> 回来,但我不知道如何访问或至少计算我列表中的项目。
解决方案
你得到的KCallable
其实是一个实例KProperty1
,你可以调用它的get
方法来获取实例:
val items = (field as KProperty1<ClassUnderTest, List<Item>>).get(sut)
推荐阅读
- java - 如何防止修改可变对象
- xamarin.forms - Xamarin.Forms 不调用转换器
- react-native - React Native:SectionList 从 renderItem 获取标题
- github - 如何使用 rollup/plugin-babel 直接从 github 安装包?
- reactjs - setState 让我无法从 mapDispatchToProps 模拟组件道具功能
- javascript - NPM在同一个项目中链接多个功能/模块?
- html - 应用覆盖时无法访问列表项
- symbols - 页面右上角的奇怪字符
- firebase - 在 Firestore Cloud 中删除集合后无法保存
- python - 正则表达式替换为自我