如何模拟以下方法:
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();
}
}
我想调用给定的ACTION。
var stub = new Mock<ITimeService>();
stub .Setup(m => m.SetDelyEvent(100, false, ACTION));
答案 0 :(得分:13)
只需使用.Callback(
方法调用将在模拟执行时运行的方法,您的回调函数可以在传递给原始方法的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());