2017-05-16 50 views
6

我想单元测试一个基本的Azure函数。该函数的Run方法需要一个TraceWriter参数; TraceWriter是一个抽象类,我没有找到太多的文档来嘲笑这种依赖。单元测试Azure功能:无法创建TraceWriter的实例,如何模拟?

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

public static void Run(string myQueueItem, TraceWriter log) 

我可以简单地删除TraceWriter在测试或创建一个重载运行方法,但是这将是一个明确违反了很好的测试实践。有关嘲笑TraceWriter和/或Azure功能单元测试策略的任何见解都将非常感谢。

回答

4

Azure的功能,现在可以支持消费的ILogger按本GitHub的主题: https://github.com/Azure/Azure-Functions/issues/293


我的建议是,你用支持VS2017预览与预编译功能的新工具,让您提高函数的可测试性。你可以开始使用了Azure的功能的新工具在这里:

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

唐娜Malayeri曾发表一个很好的职位,说明如何使用预编译的功能与C#: https://blogs.msdn.microsoft.com/appserviceteam/2017/03/16/publishing-a-net-class-library-as-a-function-app/

这将允许你创建一个使用接口而不是具体对象的函数。答案是有点长篇大论,但这里有一个类似的线程,一个不错的答案:

Azure Function logging using TraceWriter in external library

ILogger

+0

前两个环节是一样的吗? – SteveC