diff --git a/src/TUnit.Assertions/Conditions/MemberAssertion.cs b/src/TUnit.Assertions/Conditions/MemberAssertion.cs index e5707f816f..73a01fb439 100644 --- a/src/TUnit.Assertions/Conditions/MemberAssertion.cs +++ b/src/TUnit.Assertions/Conditions/MemberAssertion.cs @@ -132,10 +132,10 @@ public TypeErasedAssertion(Assertion innerAssertion) _innerAssertion = innerAssertion ?? throw new ArgumentNullException(nameof(innerAssertion)); } - public override async Task AssertAsync() + protected override async Task CheckAsync(EvaluationMetadata metadata) { await _innerAssertion.AssertAsync(); - return null; + return AssertionResult.Passed; } protected override string GetExpectation() => _innerAssertion.InternalGetExpectation(); diff --git a/tests/TUnit.Assertions.Tests/Bugs/Issue6581Tests.cs b/tests/TUnit.Assertions.Tests/Bugs/Issue6581Tests.cs new file mode 100644 index 0000000000..3235bb2933 --- /dev/null +++ b/tests/TUnit.Assertions.Tests/Bugs/Issue6581Tests.cs @@ -0,0 +1,36 @@ +namespace TUnit.Assertions.Tests.Bugs; + +public class Issue6581Tests +{ + [Test] + public async Task Member_After_HasSingleItem_Item_Succeeds() + { + var items = new List + { + new() { Value = 4 } + }; + + await Assert + .That(items).HasSingleItem() + .Item.Member(item => item.Value, value => value.IsEqualTo(4)); + } + + [Test] + public async Task Member_After_HasSingleItem_With_Predicate_Item_Succeeds() + { + var items = new List + { + new() { Value = 3 }, + new() { Value = 4 } + }; + + await Assert + .That(items).HasSingleItem(item => item.Value == 4) + .Item.Member(item => item.Value, value => value.IsEqualTo(4)); + } + + private sealed class TestObject + { + public int Value { get; init; } + } +}