模拟Microsoft Application Insights API

时间:2017-04-05 07:06:14

标签: unit-testing azure mocking azure-application-insights

我有一个应用程序使用custom traces/metrics写入App INsights,并使用REST API来读取仪表板上的数据。 我的问题是我的单元测试可以模拟自定义跟踪(TelemetryClient)和REST API吗?

我看到REST API有一个DEMO版本,但提供了随机信息。如果我可以设置DEMO检测键来写入和读取单元测试,将会很有帮助。让我知道。

3 个答案:

答案 0 :(得分:2)

我提供的方法是(对于任何外部组件)在Telemetry Client周围创建某种包装,然后在需要时可以很容易地模拟或替换它。

我要尝试的另一种方法是使用int构造函数重载TelemetryClient和模拟TelemetryConfiguration

TelemetryChannel

答案 1 :(得分:0)

最好不要嘲笑事情,最好继续第二个想法并实际创建另一个应用程序洞察资源,并在单元测试中使用该资源的检测键。那些a blog post with information about using multiple environments会让你朝着正确的方向前进。

我建议您甚至为开发人员/调试版本执行此类操作,以便只有您的"生产"遥测进入你的真实实例,然后所有开发/测试遥测都转到另一个资源。

答案 2 :(得分:0)

Application Insights使用TelemetryClient进行example模拟StubTelemetryChannel

var configuration = new TelemetryConfiguration();
this.sendItems = new List<ITelemetry>();
configuration.TelemetryChannel = new StubTelemetryChannel { OnSend = item => this.sendItems.Add(item) };
configuration.InstrumentationKey = Guid.NewGuid().ToString();
configuration.TelemetryInitializers.Add(new OperationCorrelationTelemetryInitializer());
this.telemetryClient = new TelemetryClient(configuration);