C# 我如何为azure函数编写单元测试,该函数已使用参数运行方法?

C# 我如何为azure函数编写单元测试,该函数已使用参数运行方法?,c#,azure-functions,C#,Azure Functions,如何为具有以下给定代码示例的azure函数编写单元测试 [FunctionName("DemoScheduler")] public static async void Run([TimerTrigger("0 */5* * * *")]TimerInfo myTimer, TraceWriter log) { Implementation is there... } 正如@cyptus所说的,您可以使用单独的类进行测试 [FunctionName("DemoSched

如何为具有以下给定代码示例的azure函数编写单元测试

[FunctionName("DemoScheduler")]
 public static async void Run([TimerTrigger("0 */5* * * *")]TimerInfo myTimer, TraceWriter log)
 {

   Implementation is there...    

 }

正如@cyptus所说的,您可以使用单独的类进行测试

[FunctionName("DemoScheduler")]
public static async void Run([TimerTrigger("0 */5* * * *")]TimerInfo myTimer, TraceWriter log)
{
    new Runner().Run(myTimer, log);
 }

 public class Runner 
 {
    public void Run(TimerInfo myTimer, ILogger log) 
    {
        // your code    
    }   
 }

 [TestClass]
 public class RunnerTests
{
    [TestMethod]
    public void Run_ShouldWorkCorrectly()
    {
        var timerInfo = new TimerInfo();
        //Configure your timer here

        new Runner().Run(timerInfo, new StubLogger());

        //your test
    }
} 

我们通过将实现放入经过测试的“处理程序”来管理这一点。运行逻辑除了调用处理程序外什么都不做。正如@cyptus所说的,但是是什么阻止了你仅仅调用这个方法呢?您可以创建自己的
TimerInfo
实例,并从使用
TraceWriter
切换到较新的
ILogger
界面,您可以轻松模拟。我创建了自己的TimerInfo实例,TraceWriter切换到较新的ILogger界面,可以轻松模拟。但是,在单元测试项目中添加azure函数引用时,它会抛出错误。如果您不告诉我们错误,我们可以如何帮助您?感谢您的帮助,我将实施一些事情并让您知道。你也可以通过DI
ctor(runner runner)
获得runner以获得其他服务