gpt4 book ai didi

java - 将@ShouldMatchDataSet 与NoSQLUnit 一起使用时,有什么方法可以忽略某些字段吗?

转载 作者:可可西里 更新时间:2023-11-01 09:30:17 25 4
gpt4 key购买 nike

我正在使用 NoSQLUnit 对 Mongo 数据库进行测试。

我想插入包含当前时间作为创建时间的新实体,然后使用@ShouldMatchDataSet 函数检查它们是否已正确创建。

我知道除了创建时间之外的所有具体值,有没有办法使用@ShouldMatchDataSet 忽略这个具体字段?

最佳答案

我通过名为 FlexibleComparisonStrategy 的自定义比较策略为 NoSQLUnit 做出了贡献,其中包括以下更改。它从 0.8.1 版本开始可用,要使用它只需将下一个注释添加到类签名中:

@CustomComparisonStrategy(comparisonStrategy = MongoFlexibleComparisonStrategy.class)

public class SomeTests {

检查 Mongo 数据库中是否存在所有预期数据的比较策略。它不比较存储在数据库中的所有数据都包含在预期文件中,因此其他未定义在预期资源中的数据可能存在于 Mongo 中。它只是确保预期的数据存在。

检查以下断言:

  • 检查 Mongo DB 中是否存在所有预期的集合,但接受存储在数据库中但未在预期文件中定义的其他集合。
  • 检查 Mongo DB 中是否存在所有预期的对象,但接受存储在同一集合中但未按预期定义的其他对象。
  • 对于每个对象,检查所有设置为忽略的属性,其值存在于存储在数据库中的对象中,但它接受任何保存的值。

注释 @IgnorePropertyValue(properties = {String...}) 允许用户定义在检查预期对象时应忽略的属性。

它接受两种属性定义格式:

  1. collection.property :当同时定义集合和属性名称时,排除将仅影响指定的集合。
    • 例如:使用@IgnorePropertyValue(properties = {"book.date"}),属性日期book<的每个对象中被忽略/em> 集合。如果不同集合中的其他对象具有属性 date,则不会被忽略。
  2. property :当仅定义属性名称时,它将被排除在任何预期集合中的所有对象之外。
    • 例如:使用@IgnorePropertyValue(properties = {"date"}),属性date将在每个对象中被忽略,无论集合如何。

要忽略的属性的值应该按照 Mongo DB: naming restrictions 中定义的有效集合和属性名称的规则命名。文档。

当数据库中存储的多个对象在忽略属性后与预期对象匹配时,会显示一条警告,通知已找到的对象数。

关于java - 将@ShouldMatchDataSet 与NoSQLUnit 一起使用时,有什么方法可以忽略某些字段吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28149948/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com