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

JTW*_*JTW 9 c# unit-testing azure azure-functions

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

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

public static void Run(string myQueueItem, TraceWriter log)
Run Code Online (Sandbox Code Playgroud)

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

Chr*_*ris 6

Azure函数现在可以支持根据此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 -功能-应用程序/

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

Azure函数在外部库中使用TraceWriter进行日志记录

ILogger