Unit testing with queries defined in extension methods

后端 未结 8 725
执笔经年
执笔经年 2020-12-23 02:16

In my project I am using the following approach to querying data from the database:

  1. Use a generic repository that can return any type and is not bound to one t
8条回答
  •  粉色の甜心
    2020-12-23 03:19

    If it suits your conditions, you can hijack generics to overload extension methods. Lets take the following example:

    interface ISession
    {
        // session members
    }
    
    class FakeSession : ISession
    {
        public void Query()
        {
            Console.WriteLine("fake implementation");
        }
    }
    
    static class ISessionExtensions
    {
        public static void Query(this ISession test)
        {
            Console.WriteLine("real implementation");
        }
    }
    
    static void Stub1(ISession test)
    {
        test.Query(); // calls the real method
    }
    
    static void Stub2(TTest test) where TTest : FakeSession
    {
        test.Query(); // calls the fake method
    }
    

提交回复
热议问题