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]}

 採用された回答

Steven Lord
Steven Lord 2024 年 5 月 16 日

1 投票

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.

1 件のコメント

Lena
Lena 2024 年 5 月 16 日
Thank you so much! It worked :-)

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

ヘルプ センター および File ExchangeStructures についてさらに検索

製品

リリース

R2023b

質問済み:

2024 年 5 月 16 日

コメント済み:

2024 年 5 月 16 日

Community Treasure Hunt

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

Start Hunting!

Translated by