android - 真相忽略场
问题描述
我正在寻找与 AssertJ 等效的 Guava Truth usingElementComparatorIgnoringFields 来忽略某些字段。
示例:
data class CalendarEntity(
@PrimaryKey(autoGenerate = true)
var id: Int = 0,
var name: String
)
Truth.assertThat(currentCalendars).containsExactlyElementsIn(expectedCalendars) // Here I want to ignore the id field
谢谢你的帮助。
解决方案
对于 Truth,我们决定不提供基于反射的 API,因此没有内置的等价物。
我们进行自定义比较的一般方法是Fuzzy Truth。在您的情况下,这看起来像这样(Java,未经测试):
Correspondence<CalendarEntity, CalendarEntity> ignoreId =
Correspondence.from(
(a, b) -> a.name.equals(b.name),
"fields other than ID");
assertThat(currentCalendars).usingCorrespondence(ignoreId).containsExactlyElementsIn(expectedCalendars);
如果您预计需要很多(并且您想坚持使用 Truth 而不是 AssertJ),那么您可以概括ignoreId
代码以使用任意字段名称。
(另外:在这个特定示例中,您只有CalendarEntity
一个要比较的字段。在这种情况下,您可以以稍微简单的方式构造:。)Correspondence
Correspondence.transforming(CalendarEntity::name, "name")
推荐阅读
- pine-script - 带有财务数据的 Trendingview 股票筛选器
- module - 未找到已安装的模块,但显示在 python 解释器配置中
- docker-compose - 在容器停止之前使用 docker-compose 执行脚本
- svelte - 如何将 Routify 与 Snowpack 和 Svelte 一起使用
- r - 将过滤后的数据(用户选择)显示/绘制到 Shiny 中新创建的导航栏选项卡中
- node.js - 将 MERN 应用程序部署到 Heroku 时出现“运行:未找到”错误
- r - 为什么 runGitHub 在我的公共 github 存储库中抛出一个错误,其中包含一个工作的 shinyapp?
- sql - 使用 json 格式值选择查询
- django - 如何在 Django Rest Framework 中使用 lookup_field 和 FilterSet?
- c# - 从 C# 调用时无法识别 Powershell 命令