问题描述
我已经开始开发 Azure Functions,现在我想创建我的第一个单元/集成测试,但我完全陷入了困境.虽然我有一个非常简单的函数,带有 HTTP 触发器和 HTTP 和存储队列输出,但测试它似乎非常复杂.
I've started developing Azure Functions and now I want to create my first unit/integration test, but I'm completely stuck. Although I have a very simple Function with an HTTP Trigger and HTTP and Storage Queue output, it seems ridiculously complex te test this.
代码(简化):
现在我希望构建这样的测试:
Now I'd expect to build a test like this:
在网上找了几个小时找到一个好方法后,我仍然没有找到模拟 HttpRequestData
和 FunctionContext
的方法.我还通过设置服务器来寻找完整的集成测试,但这似乎真的很复杂.我最终得到的唯一结果是:https://github.com/Azure/azure-functions-dotnet-worker/blob/72b9d17a485eda1e6e3626a9472948be1152ab7d/test/E2ETests/E2ETests/HttpEndToEndTests.cs
After looking hours on the internet to find a good approach, I still didn't find a way to mock HttpRequestData
and FunctionContext
. I also looked for a full integration test by setting up a server, but this seems really complex. The only thing I ended up was this: https://github.com/Azure/azure-functions-dotnet-worker/blob/72b9d17a485eda1e6e3626a9472948be1152ab7d/test/E2ETests/E2ETests/HttpEndToEndTests.cs
有没有人有在 .NET 5 中测试 Azure Functions 的经验,谁能帮我推动正确的方向?有没有关于如何在 dotnet-isolated 中测试 Azure Function 的好文章或示例?
Does anyone have experience testing Azure Functions in .NET 5, who can give me a push in the right direction? Are there any good articles or examples on how to test an Azure Function in dotnet-isolated?
推荐答案
解决方案一
我终于可以模拟整个事情了.绝对不是我最好的工作,可以使用一些重构,但至少我得到了一个工作原型:
Solution 1
I was finally able to mock the whole thing. Definitely not my best work and can use some refactoring, but at least I got a working prototype:
解决方案 2
我通过依赖注入添加了 Logger,并为 HttpRequestData 和 HttpResponseData 创建了我自己的实现.这更容易重复使用,并使测试本身更干净.
Solution 2
I added the Logger via Dependency Injection and created my own implementations for HttpRequestData and HttpResponseData. This is way easier to re-use and makes the tests itself cleaner.
现在测试看起来像这样:
Now the test looks like this:
这篇关于在 .NET 5 中测试 Azure 函数的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!