Skip to content

Commit 4b92f59

Browse files
author
Dennis Doomen
committed
Make it work with Fluent Assertions 8.
1 parent 41f1df4 commit 4b92f59

20 files changed

+93
-95
lines changed

Build/_build.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
</PropertyGroup>
1111

1212
<ItemGroup>
13-
<PackageReference Include="Nuke.Common" Version="8.1.4" />
13+
<PackageReference Include="Nuke.Common" Version="9.0.4" />
1414
<PackageReference Include="System.Formats.Asn1" Version="8.0.1" />
1515
<PackageDownload Include="GitVersion.Tool" Version="[5.12.0]" />
1616
<PackageDownload Include="ReportGenerator" Version="[5.1.23]" />

Build/_build.csproj.DotSettings

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@
1616
<s:Boolean x:Key="/Default/CodeStyle/CodeFormatting/CSharpFormat/PLACE_SIMPLE_ANONYMOUSMETHOD_ON_SINGLE_LINE/@EntryValue">False</s:Boolean>
1717
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/PredefinedNamingRules/=PrivateInstanceFields/@EntryIndexedValue">&lt;Policy Inspect="True" Prefix="" Suffix="" Style="AaBb" /&gt;</s:String>
1818
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/PredefinedNamingRules/=PrivateStaticFields/@EntryIndexedValue">&lt;Policy Inspect="True" Prefix="" Suffix="" Style="AaBb" /&gt;</s:String>
19+
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/UserRules/=4a98fdf6_002D7d98_002D4f5a_002Dafeb_002Dea44ad98c70c/@EntryIndexedValue">&lt;Policy&gt;&lt;Descriptor Staticness="Instance" AccessRightKinds="Private" Description="Instance fields (private)"&gt;&lt;ElementKinds&gt;&lt;Kind Name="FIELD" /&gt;&lt;Kind Name="READONLY_FIELD" /&gt;&lt;/ElementKinds&gt;&lt;/Descriptor&gt;&lt;Policy Inspect="True" WarnAboutPrefixesAndSuffixes="False" Prefix="" Suffix="" Style="AaBb" /&gt;&lt;/Policy&gt;</s:String>
20+
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/UserRules/=f9fce829_002De6f4_002D4cb2_002D80f1_002D5497c44f51df/@EntryIndexedValue">&lt;Policy&gt;&lt;Descriptor Staticness="Static" AccessRightKinds="Private" Description="Static fields (private)"&gt;&lt;ElementKinds&gt;&lt;Kind Name="FIELD" /&gt;&lt;/ElementKinds&gt;&lt;/Descriptor&gt;&lt;Policy Inspect="True" WarnAboutPrefixesAndSuffixes="False" Prefix="" Suffix="" Style="AaBb" /&gt;&lt;/Policy&gt;</s:String>
1921
<s:Boolean x:Key="/Default/Environment/SettingsMigration/IsMigratorApplied/=JetBrains_002EReSharper_002EPsi_002ECSharp_002ECodeStyle_002ECSharpAttributeForSingleLineMethodUpgrade/@EntryIndexedValue">True</s:Boolean>
2022
<s:Boolean x:Key="/Default/Environment/SettingsMigration/IsMigratorApplied/=JetBrains_002EReSharper_002EPsi_002ECSharp_002ECodeStyle_002ECSharpKeepExistingMigration/@EntryIndexedValue">True</s:Boolean>
2123
<s:Boolean x:Key="/Default/Environment/SettingsMigration/IsMigratorApplied/=JetBrains_002EReSharper_002EPsi_002ECSharp_002ECodeStyle_002ECSharpPlaceEmbeddedOnSameLineMigration/@EntryIndexedValue">True</s:Boolean>
@@ -24,4 +26,5 @@
2426
<s:Boolean x:Key="/Default/Environment/SettingsMigration/IsMigratorApplied/=JetBrains_002EReSharper_002EPsi_002ECSharp_002ECodeStyle_002ESettingsUpgrade_002EAddAccessorOwnerDeclarationBracesMigration/@EntryIndexedValue">True</s:Boolean>
2527
<s:Boolean x:Key="/Default/Environment/SettingsMigration/IsMigratorApplied/=JetBrains_002EReSharper_002EPsi_002ECSharp_002ECodeStyle_002ESettingsUpgrade_002ECSharpPlaceAttributeOnSameLineMigration/@EntryIndexedValue">True</s:Boolean>
2628
<s:Boolean x:Key="/Default/Environment/SettingsMigration/IsMigratorApplied/=JetBrains_002EReSharper_002EPsi_002ECSharp_002ECodeStyle_002ESettingsUpgrade_002EMigrateBlankLinesAroundFieldToBlankLinesAroundProperty/@EntryIndexedValue">True</s:Boolean>
27-
<s:Boolean x:Key="/Default/Environment/SettingsMigration/IsMigratorApplied/=JetBrains_002EReSharper_002EPsi_002ECSharp_002ECodeStyle_002ESettingsUpgrade_002EMigrateThisQualifierSettings/@EntryIndexedValue">True</s:Boolean></wpf:ResourceDictionary>
29+
<s:Boolean x:Key="/Default/Environment/SettingsMigration/IsMigratorApplied/=JetBrains_002EReSharper_002EPsi_002ECSharp_002ECodeStyle_002ESettingsUpgrade_002EMigrateThisQualifierSettings/@EntryIndexedValue">True</s:Boolean>
30+
<s:Boolean x:Key="/Default/Environment/SettingsMigration/IsMigratorApplied/=JetBrains_002EReSharper_002EPsi_002ECSharp_002ECodeStyle_002ESettingsUpgrade_002EPredefinedNamingRulesToUserRulesUpgrade/@EntryIndexedValue">True</s:Boolean></wpf:ResourceDictionary>

FluentAssertions.Json.sln.DotSettings

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@
1818
<s:Boolean x:Key="/Default/CodeStyle/CSharpUsing/AddImportsToDeepestScope/@EntryValue">False</s:Boolean>
1919
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/PredefinedNamingRules/=PrivateInstanceFields/@EntryIndexedValue">&lt;Policy Inspect="True" Prefix="" Suffix="" Style="aaBb" /&gt;</s:String>
2020
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/PredefinedNamingRules/=PrivateStaticFields/@EntryIndexedValue">&lt;Policy Inspect="True" Prefix="" Suffix="" Style="aaBb" /&gt;</s:String>
21+
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/UserRules/=4a98fdf6_002D7d98_002D4f5a_002Dafeb_002Dea44ad98c70c/@EntryIndexedValue">&lt;Policy&gt;&lt;Descriptor Staticness="Instance" AccessRightKinds="Private" Description="Instance fields (private)"&gt;&lt;ElementKinds&gt;&lt;Kind Name="FIELD" /&gt;&lt;Kind Name="READONLY_FIELD" /&gt;&lt;/ElementKinds&gt;&lt;/Descriptor&gt;&lt;Policy Inspect="True" WarnAboutPrefixesAndSuffixes="False" Prefix="" Suffix="" Style="aaBb" /&gt;&lt;/Policy&gt;</s:String>
22+
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/UserRules/=f9fce829_002De6f4_002D4cb2_002D80f1_002D5497c44f51df/@EntryIndexedValue">&lt;Policy&gt;&lt;Descriptor Staticness="Static" AccessRightKinds="Private" Description="Static fields (private)"&gt;&lt;ElementKinds&gt;&lt;Kind Name="FIELD" /&gt;&lt;/ElementKinds&gt;&lt;/Descriptor&gt;&lt;Policy Inspect="True" WarnAboutPrefixesAndSuffixes="False" Prefix="" Suffix="" Style="aaBb" /&gt;&lt;/Policy&gt;</s:String>
2123
<s:String x:Key="/Default/CodeStyle/Naming/JavaScriptNaming/UserRules/=JS_005FBLOCK_005FSCOPE_005FCONSTANT/@EntryIndexedValue">&lt;Policy Inspect="True" Prefix="" Suffix="" Style="aaBb" /&gt;</s:String>
2224
<s:String x:Key="/Default/CodeStyle/Naming/JavaScriptNaming/UserRules/=JS_005FBLOCK_005FSCOPE_005FVARIABLE/@EntryIndexedValue">&lt;Policy Inspect="True" Prefix="" Suffix="" Style="aaBb" /&gt;</s:String>
2325
<s:String x:Key="/Default/CodeStyle/Naming/JavaScriptNaming/UserRules/=JS_005FCONSTRUCTOR/@EntryIndexedValue">&lt;Policy Inspect="True" Prefix="" Suffix="" Style="AaBb" /&gt;</s:String>
@@ -67,6 +69,7 @@
6769
<s:Boolean x:Key="/Default/Environment/SettingsMigration/IsMigratorApplied/=JetBrains_002EReSharper_002EPsi_002ECSharp_002ECodeStyle_002ESettingsUpgrade_002ECSharpPlaceAttributeOnSameLineMigration/@EntryIndexedValue">True</s:Boolean>
6870
<s:Boolean x:Key="/Default/Environment/SettingsMigration/IsMigratorApplied/=JetBrains_002EReSharper_002EPsi_002ECSharp_002ECodeStyle_002ESettingsUpgrade_002EMigrateBlankLinesAroundFieldToBlankLinesAroundProperty/@EntryIndexedValue">True</s:Boolean>
6971
<s:Boolean x:Key="/Default/Environment/SettingsMigration/IsMigratorApplied/=JetBrains_002EReSharper_002EPsi_002ECSharp_002ECodeStyle_002ESettingsUpgrade_002EMigrateThisQualifierSettings/@EntryIndexedValue">True</s:Boolean>
72+
<s:Boolean x:Key="/Default/Environment/SettingsMigration/IsMigratorApplied/=JetBrains_002EReSharper_002EPsi_002ECSharp_002ECodeStyle_002ESettingsUpgrade_002EPredefinedNamingRulesToUserRulesUpgrade/@EntryIndexedValue">True</s:Boolean>
7073
<s:String x:Key="/Default/Environment/UnitTesting/MsTestProvider/RunConfigurationFilename/@EntryValue">D:\Workspaces\FluentAssertions\Default.testsettings</s:String>
7174
<s:Int64 x:Key="/Default/Environment/UnitTesting/ParallelProcessesCount/@EntryValue">4</s:Int64>
7275
<s:Boolean x:Key="/Default/Environment/UnitTesting/ShadowCopy/@EntryValue">False</s:Boolean>

Src/FluentAssertions.Json/FluentAssertions.Json.csproj

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -26,16 +26,16 @@
2626
<PackageLicenseExpression>Apache-2.0</PackageLicenseExpression>
2727
<PackageIcon>FluentAssertions.png</PackageIcon>
2828
<PackageReleaseNotes>See https://github.com/fluentassertions/fluentassertions.json/releases/</PackageReleaseNotes>
29-
<Copyright>Copyright Dennis Doomen 2010-2021</Copyright>
29+
<Copyright>Copyright 2024-$([System.DateTime]::Now.ToString(yyyy)) Xceed Software Inc., all rights reserved</Copyright>
3030
<LangVersion>9.0</LangVersion>
3131
</PropertyGroup>
3232
<PropertyGroup Condition="'$(Configuration)|$(TargetFramework)|$(Platform)'=='Debug|net47|AnyCPU'">
3333
<AllowUnsafeBlocks>false</AllowUnsafeBlocks>
3434
</PropertyGroup>
3535
<ItemGroup>
36-
<PackageReference Include="FluentAssertions" Version="6.0.0" />
37-
<PackageReference Include="JetBrains.Annotations" Version="2021.3.0" PrivateAssets="all" />
38-
<PackageReference Include="Microsoft.SourceLink.GitHub" Version="1.1.1" PrivateAssets="All" />
36+
<PackageReference Include="FluentAssertions" Version="8.0.0" />
37+
<PackageReference Include="JetBrains.Annotations" Version="2024.3.0" PrivateAssets="all" />
38+
<PackageReference Include="Microsoft.SourceLink.GitHub" Version="8.0.0" PrivateAssets="All" />
3939
<PackageReference Include="Newtonsoft.Json" Version="13.0.1" />
4040
<None Include="..\FluentAssertions.png" Pack="true" Visible="false" PackagePath="" />
4141
</ItemGroup>
@@ -46,19 +46,19 @@
4646
<AdditionalFiles Include="BannedSymbols.txt" />
4747
</ItemGroup>
4848
<ItemGroup Condition="'$(TargetFramework)' == 'netstandard2.0'">
49-
<PackageReference Include="Microsoft.CodeAnalysis.BannedApiAnalyzers" Version="3.3.3">
49+
<PackageReference Include="Microsoft.CodeAnalysis.BannedApiAnalyzers" Version="3.3.4">
5050
<PrivateAssets>all</PrivateAssets>
5151
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
5252
</PackageReference>
53-
<PackageReference Include="Microsoft.CodeAnalysis.FxCopAnalyzers" Version="3.3.1">
53+
<PackageReference Include="Microsoft.CodeAnalysis.FxCopAnalyzers" Version="3.3.2">
5454
<PrivateAssets>all</PrivateAssets>
5555
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
5656
</PackageReference>
5757
<PackageReference Include="StyleCop.Analyzers" Version="1.2.0-beta.406">
5858
<PrivateAssets>all</PrivateAssets>
5959
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
6060
</PackageReference>
61-
<PackageReference Include="CSharpGuidelinesAnalyzer" Version="3.6.0">
61+
<PackageReference Include="CSharpGuidelinesAnalyzer" Version="3.8.5">
6262
<PrivateAssets>all</PrivateAssets>
6363
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
6464
</PackageReference>

Src/FluentAssertions.Json/JTokenAssertions.cs

Lines changed: 16 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -27,10 +27,11 @@ static JTokenAssertions()
2727
/// Initializes a new instance of the <see cref="JTokenAssertions" /> class.
2828
/// </summary>
2929
/// <param name="subject">The subject</param>
30-
public JTokenAssertions(JToken subject)
31-
: base(subject)
30+
/// <param name="orCreate"></param>
31+
public JTokenAssertions(JToken subject, AssertionChain assertionChain)
32+
: base(subject, assertionChain)
3233
{
33-
EnumerableSubject = new GenericCollectionAssertions<JToken>(subject);
34+
EnumerableSubject = new GenericCollectionAssertions<JToken>(subject, assertionChain);
3435
}
3536

3637
/// <summary>
@@ -126,7 +127,7 @@ private AndConstraint<JTokenAssertions> BeEquivalentTo(JToken expected, bool ign
126127
$"{Format(expected, true).EscapePlaceholders()}{Environment.NewLine}" +
127128
"{reason}.";
128129

129-
Execute.Assertion
130+
CurrentAssertionChain
130131
.ForCondition(difference == null)
131132
.BecauseOf(because, becauseArgs)
132133
.FailWith(message);
@@ -180,7 +181,7 @@ public AndConstraint<JTokenAssertions> NotBeEquivalentTo(string unexpected, stri
180181
/// </param>
181182
public AndConstraint<JTokenAssertions> NotBeEquivalentTo(JToken unexpected, string because = "", params object[] becauseArgs)
182183
{
183-
Execute.Assertion
184+
CurrentAssertionChain
184185
.ForCondition((Subject is null && unexpected is not null) ||
185186
!JToken.DeepEquals(Subject, unexpected))
186187
.BecauseOf(because, becauseArgs)
@@ -211,12 +212,12 @@ public AndConstraint<JTokenAssertions> HaveValue(string expected)
211212
/// </param>
212213
public AndConstraint<JTokenAssertions> HaveValue(string expected, string because, params object[] becauseArgs)
213214
{
214-
Execute.Assertion
215+
CurrentAssertionChain
215216
.ForCondition(Subject is not null)
216217
.BecauseOf(because, becauseArgs)
217218
.FailWith("Expected JSON token to have value {0}, but the element was <null>.", expected);
218219

219-
Execute.Assertion
220+
CurrentAssertionChain
220221
.ForCondition(Subject.Value<string>() == expected)
221222
.BecauseOf(because, becauseArgs)
222223
.FailWith("Expected JSON property {0} to have value {1}{reason}, but found {2}.",
@@ -238,12 +239,12 @@ public AndConstraint<JTokenAssertions> HaveValue(string expected, string because
238239
/// </param>
239240
public AndConstraint<JTokenAssertions> NotHaveValue(string unexpected, string because = "", params object[] becauseArgs)
240241
{
241-
Execute.Assertion
242+
CurrentAssertionChain
242243
.ForCondition(Subject is not null)
243244
.BecauseOf(because, becauseArgs)
244245
.FailWith("Did not expect the JSON property to have value {0}, but the token was <null>.", unexpected);
245246

246-
Execute.Assertion
247+
CurrentAssertionChain
247248
.ForCondition(Subject.Value<string>() != unexpected)
248249
.BecauseOf(because, becauseArgs)
249250
.FailWith("Did not expect JSON property {0} to have value {1}{reason}.",
@@ -279,7 +280,7 @@ public AndConstraint<JTokenAssertions> MatchRegex(string regularExpression, stri
279280
throw new ArgumentNullException(nameof(regularExpression), "MatchRegex does not support <null> pattern");
280281
}
281282

282-
Execute.Assertion
283+
CurrentAssertionChain
283284
.ForCondition(Regex.IsMatch(Subject.Value<string>(), regularExpression))
284285
.BecauseOf(because, becauseArgs)
285286
.FailWith("Expected {context:JSON property} {0} to match regex pattern {1}{reason}, but found {2}.",
@@ -306,7 +307,7 @@ public AndConstraint<JTokenAssertions> NotMatchRegex(string regularExpression, s
306307
throw new ArgumentNullException(nameof(regularExpression), "MatchRegex does not support <null> pattern");
307308
}
308309

309-
Execute.Assertion
310+
CurrentAssertionChain
310311
.ForCondition(!Regex.IsMatch(Subject.Value<string>(), regularExpression))
311312
.BecauseOf(because, becauseArgs)
312313
.FailWith("Did not expect {context:JSON property} {0} to match regex pattern {1}{reason}.",
@@ -341,7 +342,8 @@ public AndWhichConstraint<JTokenAssertions, JToken> HaveElement(string expected,
341342
params object[] becauseArgs)
342343
{
343344
JToken jToken = Subject[expected];
344-
Execute.Assertion
345+
346+
CurrentAssertionChain
345347
.ForCondition(jToken != null)
346348
.BecauseOf(because, becauseArgs)
347349
.FailWith("Expected JSON document {0} to have element \"" + expected.EscapePlaceholders() + "\"{reason}" +
@@ -366,7 +368,8 @@ public AndWhichConstraint<JTokenAssertions, JToken> NotHaveElement(string unexpe
366368
params object[] becauseArgs)
367369
{
368370
JToken jToken = Subject[unexpected];
369-
Execute.Assertion
371+
372+
CurrentAssertionChain
370373
.ForCondition(jToken == null)
371374
.BecauseOf(because, becauseArgs)
372375
.FailWith("Did not expect JSON document {0} to have element \"" + unexpected.EscapePlaceholders() + "\"{reason}.", Subject);

Src/FluentAssertions.Json/JsonAssertionExtensions.cs

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
using System.Diagnostics;
2+
using FluentAssertions.Execution;
23
using JetBrains.Annotations;
34
using Newtonsoft.Json.Linq;
45

@@ -16,7 +17,7 @@ public static class JsonAssertionExtensions
1617
[Pure]
1718
public static JTokenAssertions Should(this JToken jToken)
1819
{
19-
return new JTokenAssertions(jToken);
20+
return new JTokenAssertions(jToken, AssertionChain.GetOrCreate());
2021
}
2122

2223
/// <summary>
@@ -25,7 +26,7 @@ public static JTokenAssertions Should(this JToken jToken)
2526
[Pure]
2627
public static JTokenAssertions Should(this JObject jObject)
2728
{
28-
return new JTokenAssertions(jObject);
29+
return new JTokenAssertions(jObject, AssertionChain.GetOrCreate());
2930
}
3031

3132
/// <summary>
@@ -34,7 +35,7 @@ public static JTokenAssertions Should(this JObject jObject)
3435
[Pure]
3536
public static JTokenAssertions Should(this JValue jValue)
3637
{
37-
return new JTokenAssertions(jValue);
38+
return new JTokenAssertions(jValue, AssertionChain.GetOrCreate());
3839
}
3940
}
4041
}

Src/FluentAssertions.Json/JsonAssertionOptions.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,9 @@ namespace FluentAssertions.Json
66
/// <summary>
77
/// Represents the run-time type-specific behavior of a JSON structural equivalency assertion. It is the equivalent of <see cref="FluentAssertions.Equivalency.EquivalencyAssertionOptions{T}"/>
88
/// </summary>
9-
public sealed class JsonAssertionOptions<T> : EquivalencyAssertionOptions<T>, IJsonAssertionOptions<T>
9+
public sealed class JsonAssertionOptions<T> : EquivalencyOptions<T>, IJsonAssertionOptions<T>
1010
{
11-
public JsonAssertionOptions(EquivalencyAssertionOptions<T> equivalencyAssertionOptions) : base(equivalencyAssertionOptions)
11+
public JsonAssertionOptions(EquivalencyOptions<T> equivalencyAssertionOptions) : base(equivalencyAssertionOptions)
1212
{
1313

1414
}

Src/FluentAssertions.Json/ObjectAssertionsExtensions.cs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -61,22 +61,22 @@ public static AndConstraint<ObjectAssertions> BeJsonSerializable<T>(this ObjectA
6161
/// Zero or more objects to format using the placeholders in <see cref="because" />.
6262
/// </param>
6363
[CustomAssertion]
64-
public static AndConstraint<ObjectAssertions> BeJsonSerializable<T>(this ObjectAssertions assertions, Func<EquivalencyAssertionOptions<T>, EquivalencyAssertionOptions<T>> options, string because = "", params object[] becauseArgs)
64+
public static AndConstraint<ObjectAssertions> BeJsonSerializable<T>(this ObjectAssertions assertions, Func<EquivalencyOptions<T>, EquivalencyOptions<T>> options, string because = "", params object[] becauseArgs)
6565
{
66-
Execute.Assertion.ForCondition(assertions.Subject != null)
66+
assertions.CurrentAssertionChain.ForCondition(assertions.Subject != null)
6767
.BecauseOf(because, becauseArgs)
6868
.FailWith("Expected {context:object} to be JSON serializable{reason}, but the value is null. Please provide a value for the assertion.");
6969

70-
Execute.Assertion.ForCondition(assertions.Subject is T)
70+
assertions.CurrentAssertionChain.ForCondition(assertions.Subject is T)
7171
.BecauseOf(because, becauseArgs)
7272
.FailWith("Expected {context:object} to be JSON serializable{reason}, but {context:object} is not assignable to {0}", typeof(T));
7373

7474
try
7575
{
7676
var deserializedObject = CreateCloneUsingJsonSerializer(assertions.Subject);
7777

78-
var defaultOptions = AssertionOptions.CloneDefaults<T>()
79-
.RespectingRuntimeTypes()
78+
var defaultOptions = AssertionConfiguration.Current.Equivalency.CloneDefaults<T>()
79+
.PreferringRuntimeMemberTypes()
8080
.IncludingFields()
8181
.IncludingProperties();
8282

@@ -87,7 +87,7 @@ public static AndConstraint<ObjectAssertions> BeJsonSerializable<T>(this ObjectA
8787
catch (Exception exc)
8888
#pragma warning restore CA1031 // Ignore catching general exception
8989
{
90-
Execute.Assertion
90+
assertions.CurrentAssertionChain
9191
.BecauseOf(because, becauseArgs)
9292
.FailWith("Expected {context:object} to be JSON serializable{reason}, but serializing {0} failed with {1}", assertions.Subject, exc);
9393
}

0 commit comments

Comments
 (0)