A wee test helper for setting private ID fields
Every now and then I need to write tests that depend on the ID of a persistent object. IDs are usually private and read-only, assigned internally by your ORM, so I use a little fluent extension method to help set them via reflection.
public static class ObjectExtensions{ // Helper to set private ID public static T WithId<T>(this T obj, object id) { typeof(T) .GetField("id", BindingFlags.Instance | BindingFlags.NonPublic) .SetValue(obj, id); return obj; }}
Tweak as desired to suit your naming conventions or base classes. Usage is as follows:
[TestFixture]public class When_comparing_two_foos{ [Test] public void Should_not_be_the_same_if_they_have_different_ids() { var a = new Foo().WithId(4); var b = new Foo().WithId(42); a.Should().Not.Be.EqualTo(b); }}