How to use IgnoringFields in StructComparator?

In my unit test I am comparing two structs s1 and s2 both with the same field names but different field values. How do I ignore a set of fields based on the field names? I found Comparator for structure arrays - MATLAB - MathWorks Benelux but no examples for IgnoringFields are shown.
I tried something like this:
testCase.verifyThat(s1,IsEqualTo(s1,"Using",StructComparator(NumericComparator,"IgnoringFields",["field7","field10"])))
The error says:
Error using matlab.unittest.constraints.Comparator/throwUnsupportedValue
None of the currently available comparators support the value.
Available Comparators:
--> matlab.unittest.constraints.NumericComparator
Value (cell):
1×1 cell array
{[1.23456789e+10]}

 Accepted Answer

Rather than building a StructComparator, just specify "IgnoringFields" in your IsEqualTo call.
s1 = struct('a', 1, 'b', 2);
s2 = struct('a', 1, 'b', 3);
import matlab.unittest.constraints.IsEqualTo
testcase = matlab.unittest.TestCase.forInteractiveUse;
verifyThat(testcase, s1, IsEqualTo(s2, "IgnoringFields", "b"))
Verification passed.

More Answers (0)

Categories

Products

Release

R2023b

Asked:

on 16 May 2024

Commented:

on 16 May 2024

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!