private static DialogflowNLUTestClient CreateTestClient(DetectIntentResponse response, Action <DetectIntentRequest> callback = null) { var mockCallInvoker = new Mock <CallInvoker>(); mockCallInvoker .Setup(invoker => invoker.AsyncUnaryCall( It.Is <Method <DetectIntentRequest, DetectIntentResponse> >(method => method.Name == "DetectIntent"), It.IsAny <string>(), It.IsAny <CallOptions>(), It.IsAny <DetectIntentRequest>())) .Returns(new AsyncUnaryCall <DetectIntentResponse>( Task.FromResult(response), Task.FromResult(default(Metadata)), () => Status.DefaultSuccess, () => default(Metadata), () => { })) .Callback(( Method <DetectIntentRequest, DetectIntentResponse> method, string host, CallOptions callOptions, DetectIntentRequest request) => callback?.Invoke(request)); var sessionsClient = new SessionsClientBuilder { CallInvoker = mockCallInvoker.Object } .Build(); var configuration = new ConfigurationBuilder() .AddInMemoryCollection(new Dictionary <string, string> { { "dialogflowProjectId", Guid.NewGuid().ToString() }, }) .Build(); return(new DialogflowNLUTestClient(sessionsClient, configuration)); }