public void given_invalid_children_when_validating_parent_should_return_validation_results() { var parent = new Parent { Address = new Address{}, Car = new Car(), Children = new List<Child> {new Child {FirstName = "Todd"}, new Child {LastName = "Meinershagen"}} }; var results = new List<ValidationResult>(); parent.TryValidate(results); results.Should() .Contain(r => r.ErrorMessage == "Child requires a first name.") .And .Contain(r => r.ErrorMessage == "Child requires a last name.") .And .Contain(r => r.ErrorMessage == "Address requires a city.") .And .Contain(r => r.ErrorMessage == "Car requires a make.") .And .Contain(r => r.ErrorMessage == "Car requires a model."); }