- 
                Notifications
    You must be signed in to change notification settings 
- Fork 277
Description
Question
Hello. I am trying to mock out this method so that any time it is called the Func is invoked and T is returned.
T New<T>(Func<T> instantiate) where T : Command;
Command is a base class for all of my commands. I thought I could do this
harness.CommandFactory
            .New(Arg.Any<Func<Command>>())
            .Returns(r => r.Arg<Func<Command>>()());
But of course this only matches if the caller passes in the base Command, not a derived class such as AddUserCommand.
Then I came across the newly added Arg.AnyType and thought this was perfect for my needs but I can't get the syntax right. The remark on the method comments seems to indicate that I need to create a derived class but I'm not sure I can for this specific case... "If the generic type parameter has constraints, you will have to create a derived class/struct that implements those constraints." This was the attempt, it fails because now I am back to having a derived type which never matches
public record AnyCommand : Command, Arg.AnyType;
harness.CommandFactory
            .New(Arg.Any<Func<AnyCommand>>())
            .Returns(r => r.Arg<Func<Command>>()());
Does anyone have an idea how/if this can be achieved?
Related links