Dependency injection 如何使用ILogger为azure函数(Httptrigger)编写单元测试

Dependency injection 如何使用ILogger为azure函数(Httptrigger)编写单元测试,dependency-injection,nunit,azure-functions,mstest,azure-functions-runtime,Dependency Injection,Nunit,Azure Functions,Mstest,Azure Functions Runtime,想要为HttpTrigger GET编写单元测试。 方法签名如下: public static async Task<HttpResponseMessage> Run( [HttpTrigger(AuthorizationLevel.Function, "get", Route = null)] HttpRequestMessage request, ILogger log) httptrigger azure函数的任何样本单元测试都有助于克服上述问题(I

想要为HttpTrigger GET编写单元测试。 方法签名如下:

public static async Task<HttpResponseMessage> Run(
    [HttpTrigger(AuthorizationLevel.Function, "get", Route = null)]
    HttpRequestMessage request, 
    ILogger log)

httptrigger azure函数的任何样本单元测试都有助于克服上述问题(
Ilogger
injection)。

当主题方法需要易于模拟和注入的抽象时,实际上没有必要扩展实现问题

以下面的简化示例为例

公共静态异步任务运行(
[HttpTrigger(AuthorizationLevel.Function,“get”,Route=null)]
HttpRequestMessage请求,
伊洛格测井
) {
//…为简洁起见省略
}
要独立地对上述函数进行单元测试,只需为测试提供必要的依赖项即可完成并断言预期行为

[TestMethod]
公共异步任务函数\u应\u返回\u所需的\u响应(){
//安排
var request=new-HttpRequestMessage();
//…根据测试需要填充
var logger=Mock.Of();//例如使用Moq
//…设置预期的行为
//表演
var response=wait MyFunction.Run(请求、记录器);
//断言
//…在响应中断言所需的行为
}

有一篇很好的博文介绍了这个主题:)

public class LoggerWriter : Microsoft.Extensions.Logging.Logger<ILogger>
{
    public LoggerWriter() : base() // this needs logger factory.
    {
    }
}