首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何用ILogger为azure函数(Httptrigger)编写单元测试

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

Stack Overflow用户
提问于 2018-08-06 09:50:12
回答 2查看 4.1K关注 0票数 3

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

代码语言:javascript
复制
public static async Task<HttpResponseMessage> Run(
    [HttpTrigger(AuthorizationLevel.Function, "get", Route = null)]
    HttpRequestMessage request, 
    ILogger log)

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

如何用这个注入来写单元测试用例,尝试用下面的东西来创建ILogger的存根,但这需要LoggerFactory

代码语言:javascript
复制
public class LoggerWriter : Microsoft.Extensions.Logging.Logger<ILogger>
{
    public LoggerWriter() : base() // this needs logger factory.
    {
    }
}

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-08-06 10:45:22

当主题方法需要一个可以轻松模拟和注入的抽象时,确实没有必要扩展实现关注点。

以下面的简化示例为例

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

要孤立地对上述函数进行单元测试,只需提供必要的依赖项,以便测试完成,并断言预期的行为。

代码语言:javascript
复制
[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 
}
票数 7
EN

Stack Overflow用户

发布于 2018-08-07 06:59:59

有一篇很棒的博客文章介绍了这个主题:) https://medium.com/@jeffhollan/serverless-devops-and-ci-cd-part-1-f76f0357cba4

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51699663

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档