2017-04-05 4 views
1

Ich habe eine Anwendung, die in App INsights mit custom traces/metrics schreibt und auch REST API zum Lesen von Daten im Dashboard verwendet. Meine Fragen sind für meine Unit-Tests kann ich sowohl benutzerdefinierte Traces (TelemetryClient) und REST API spotten?Mock Microsoft Application Insights API

Ich sehe REST API hat eine Demo-Version, aber liefert zufällige Informationen. Es wäre hilfreich, wenn ich einen DEMO-Instrumentationsschlüssel einrichten könnte, um darauf zu schreiben und von ihm zu lesen. Gib mir Bescheid.

Antwort

1

Mein angebotener Ansatz wäre (wie für jede externe Komponente), eine Art Wrapper um Telemetry Client zu erstellen, und dann wäre es leicht, es zu verspotten oder es später bei Bedarf zu ersetzen.

Der andere Ansatz, den ich versuchen würde, ist TelemetryClient Konstruktor Überladung mit TelemetryConfiguration und Mock TelemetryChannel zu verwenden.

var client = new TelemetryClient(
    new TelemetryConfiguration 
    {     
     TelemetryChannel = new MOCK... 
    }); 
0

Statt Dinge spöttisch aus, könnte es besser sein, mit Ihrer zweiten Idee zu gehen und tatsächlich eine andere Anwendung Einblicke Ressource erstellen und verwenden Sie die Instrumentierung Schlüssel für die Ressource in den Unit-Tests. Es gibt a blog post with information about using multiple environments, die Sie in die richtige Richtung führen sollten.

Ich würde vorschlagen, dass Sie auch so etwas für Entwickler/Debug-Builds tun, so dass nur Ihre "Produktion" Telemetrie zu Ihrer realen Instanz geht, und dann alle Dev/Test-Telemetrie zu einer anderen Ressource statt.

+0

Ja, es ist eine gute Idee, Schlüssel zu drehen, nur hinderance in eine echte Anwendung für Automatisierungstests zu schlagen ist "Lesen der Schreibvorgänge" - es ist nicht bequem wegen Schreiblatenz im Entwicklermodus auch (etwa ein min oder 2) – Praveen

Verwandte Themen