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);
    }
}