起订量.执行作为参数给出的Action

Mir*_*pov 9 .net c# action moq

如何模拟以下方法:

public class TimeService : ITimeService
{
    public void SetDelyEvent(int interval, bool reset,  Action action)
    {
        var timer = new Timer {Interval = interval, AutoReset = reset};
        timer.Elapsed += (sender, args) => action();
        timer.Start();
    }
}
Run Code Online (Sandbox Code Playgroud)

我想调用给定的ACTION.

var stub = new Mock<ITimeService>();
stub .Setup(m => m.SetDelyEvent(100, false, ACTION));
Run Code Online (Sandbox Code Playgroud)

Sco*_*ain 15

只需使用该.Callback(方法调用将在模拟执行时运行的方法,您的回调函数可以在传递给原始方法的Action中传递,您需要做的就是在回调中执行Action.

    var stub = new Mock<ITimeService>();
    stub .Setup(m => m.SetDelyEvent(It.IsAny<int>(), It.IsAny<bool>(), It.IsAny<Action>()))
         .Callback((int interval, bool reset, Action action) => action());
Run Code Online (Sandbox Code Playgroud)