public async Task LogsTelemetry() { var telemetryClient = new Mock <IBotTelemetryClient>(); var recognizer = new MyRecognizerSubclass { TelemetryClient = telemetryClient.Object }; var adapter = new TestAdapter(TestAdapter.CreateConversation("RecognizerLogsTelemetry")); var activity = MessageFactory.Text("hi"); var context = new TurnContext(adapter, activity); var dc = new DialogContext(new DialogSet(), context, new DialogState()); var result = await recognizer.RecognizeAsync(dc, activity); var actualTelemetryProps = (IDictionary <string, string>)telemetryClient.Invocations[0].Arguments[1]; Assert.NotNull(result); Assert.Equal("hi", actualTelemetryProps["Text"]); Assert.Null(actualTelemetryProps["AlteredText"]); actualTelemetryProps.TryGetValue("TopIntent", out var intent); Assert.True(intent == "myTestIntent"); Assert.Equal("1.0", actualTelemetryProps["TopIntentScore"]); var hasMyTestIntent = actualTelemetryProps["Intents"].Contains("myTestIntent"); Assert.True(hasMyTestIntent); Assert.Equal("{}", actualTelemetryProps["Entities"]); Assert.Null(actualTelemetryProps["AdditionalProperties"]); telemetryClient.Verify( client => client.TrackEvent( "MyRecognizerSubclassResult", It.IsAny <IDictionary <string, string> >(), null), Times.Once()); }
public async Task LogsTelemetryThrowsArgumentNullExceptionOnNullDialogContext() { var telemetryClient = new Mock <IBotTelemetryClient>(); var recognizer = new MyRecognizerSubclass { TelemetryClient = telemetryClient.Object }; var activity = MessageFactory.Text("hi"); await Assert.ThrowsAsync <ArgumentNullException>(() => recognizer.RecognizeAsync(null, activity)); }