我想为HttpTrigger GET编写单元测试。方法签名如下:
public static async Task<HttpResponseMessage> Run(
[HttpTrigger(AuthorizationLevel.Function, "get", Route = null)]
HttpRequestMessage request,
ILogger log)
这里,ILogger
是Microsoft.Extensions.Logging的类型。
如何用这个注入来写单元测试用例,尝试用下面的东西来创建ILogger
的存根,但这需要LoggerFactory
。
public class LoggerWriter : Microsoft.Extensions.Logging.Logger<ILogger>
{
public LoggerWriter() : base() // this needs logger factory.
{
}
}
任何用来克服上述问题(Ilogger
注入)的httptrigger azure函数的示例单元测试都是有帮助的。
发布于 2018-08-06 10:45:22
当主题方法需要一个可以轻松模拟和注入的抽象时,确实没有必要扩展实现关注点。
以下面的简化示例为例
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
}
发布于 2018-08-07 06:59:59
有一篇很棒的博客文章介绍了这个主题:) https://medium.com/@jeffhollan/serverless-devops-and-ci-cd-part-1-f76f0357cba4
https://stackoverflow.com/questions/51699663
复制相似问题