gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 08:23:12 26 4
gpt4 key购买 nike

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

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

在这里, ILogger是 Microsoft.Extensions.Logging 的类型。

如何使用此注入(inject)编写单元测试用例,
试图创建 ILogger 的 stub 使用下面的东西,但这需要 LoggerFactory .
public class LoggerWriter : Microsoft.Extensions.Logging.Logger<ILogger>
{
public LoggerWriter() : base() // this needs logger factory.
{
}
}

httptrigger azure 函数的任何示例单元测试以克服上述问题( Ilogger 注入(inject))都是有帮助的。

最佳答案

当主题方法需要可以轻松模拟和注入(inject)的抽象时,确实不需要扩展实现问题。

采取以下简化示例

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

要单独对上述功能进行单元测试,只需提供必要的依赖项以完成测试并断言预期的行为。

[TestMethod]
public async Task Function_Should_Return_Desired_Response() {
//Arrange
var request = new HttpRequestMessage();
//...populate as needed for test

var logger = Mock.Of<ILogger>(); //using Moq for example
//...setup expected behavior

//Act
var response = await MyFunction.Run(request, logger);

//Assert
//...assert desired behavior in the response
}

关于dependency-injection - 如何使用 ILogger 为 azure 函数(Httptrigger)编写单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51699663/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com