我有一个应用程序使用custom traces/metrics写入App INsights,并使用REST API来读取仪表板上的数据。 我的问题是我的单元测试可以模拟自定义跟踪(TelemetryClient)和REST API吗?
我看到REST API有一个DEMO版本,但提供了随机信息。如果我可以设置DEMO检测键来写入和读取单元测试,将会很有帮助。让我知道。
答案 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);