protoactor-dotnet icon indicating copy to clipboard operation
protoactor-dotnet copied to clipboard

Mocking grain client and testability

Open AqlaSolutions opened this issue 1 year ago • 2 comments

Currently it's not possible to mock generated grain clients because their generated methods are not virtual. For better testability could you consider making them virtual or better additionally generating interfaces for them? For an example, I want to unit test a class which needs to call some grain. Currently I can't test it in isolation because I need to pass an instance of that grain client and that instance can't be mocked.

class SomeClass
{
    private readonly Func<string, MyGrainClient> _grainFactory;
    public SomeClass(Func<string, MyGrainClient> grainFactory) // But MyGrainClient can't be mocked!
    {
        _grainFactory = grainFactory;
    }

    public void SomeMethod(string arg) // I want to test this method without real MyGrainClient
    {
        _grainFactory(arg).MyMethod();
    }
}

AqlaSolutions avatar May 29 '23 10:05 AqlaSolutions