Hi,
excuse me for jumping in.
The issue is not related to NCrunch.
It is (most probably) how you use/define the mocks.
Your test defines a GetClientDetailQuery instance while your code creates another GetClientDetailQuery instance. So there are 2 different living instances hanging around.
As long as you did not override / implement the equality methods (object.Equals, IEquatable<T>.Equals), the mock framework (NSubstitute, Moq....) considers both to be different.
As they are considered different, you did not specify a return value for the specific method call, so per default most Mock frameworks will return null.
As it returns null, you get a NullPointerException.
_queryDispatcher.Dispatch<GetClientDetailQuery, GetClientDetailRequestQueryResults>(query) <-- returns null
If you want to make it pass, either implement the equality members or use the helper classes from the Mock framework, such as "Arg.Is<>(...)" or how it's named in NSubstitute.
Best regards,
Ralf