单元测试Azure功能:无法创建TraceWriter的实例,如何模拟?

时间:2017-05-16 19:57:50

标签: c# unit-testing azure azure-functions

我正在尝试对基本Azure功能进行单元测试。函数的Run方法需要一个TraceWriter参数; TraceWriter是一个抽象类,我在模拟这种依赖关系的文档方面找不到太多。

这是我尝试测试的方法的签名:

public static void Run(string myQueueItem, TraceWriter log)

非常感谢有关模拟TraceWriter和/或Azure功能单元测试策略的任何见解。

2 个答案:

答案 0 :(得分:6)

Azure Functions现在可以支持根据此GitHub线程使用ILogger: https://github.com/Azure/Azure-Functions/issues/293

我的建议是,您使用VS2017 Preview支持的新工具和预编译功能,以便您提高功能的可测试性。您可以在此处开始使用Azure功能的新工具:

https://blogs.msdn.microsoft.com/appserviceteam/2017/03/16/publishing-a-net-class-library-as-a-function-app/

Donna Malayeri发表了一篇精彩文章,解释了如何在C#中使用预编译函数: https://blogs.msdn.microsoft.com/appserviceteam/2017/03/16/publishing-a-net-class-library-as-a-function-app/

这将允许您创建一个使用Interface而不是具体对象的Function。答案有点长,但这里有一个类似的帖子,答案很好:

Azure Function logging using TraceWriter in external library

ILogger

答案 1 :(得分:0)

使用起订量;

...

...

var log = new Mock(TraceLevel.Info).Object;

简单!

相关问题