DiffBuilder - игнорировать значение элемента, но убедиться, что узел XML присутствует - PullRequest
0 голосов
/ 09 апреля 2019

Я использую DiffBuilder для сравнения двух файлов XML. Для данного элемента Product я хочу проверить, присутствует ли этот элемент, но я хочу игнорировать его значение. Возможно ли использовать XmlUnit ?

Мой код ниже будет работать независимо от наличия элемента Product, который не работает для того, что мне нужно

var differenceBuilder = DiffBuilder
                .Compare(Input.FromDocument(controlXmlFile))
                .WithTest(Input.FromDocument(testXmlDile))
                .WithNodeFilter(n => n.Name != "Product");

1 Ответ

1 голос
/ 09 апреля 2019

В этом случае вы не хотите выбрасывать сам узел, а различия между узлами.Вы бы не использовали NodeFilter, а скорее DifferenceEvaluator для этого.

Очень упрощенная версия может быть что-то вроде

.WithDifferenceEvaluator((comparison, outcome) =>
        comparison.ControlDetails.Target.Name == "Product" ? ComparisonResult.EQUAL : outcome
    ) 

, но вам необходимо принять во вниманиенапример, ControlDetails может быть null (и вместо этого смотреть TestDetails).И если ваш узел Product имеет дочерние элементы, вы можете отфильтровать их с помощью NodeFilter или проверить, называется ли какой-либо родительский объект текущей цели сравнения Product.

...