比较操作<T>

Compare Action<T>

我有一个服务 class 如下:

public class MyService
{
    private readonly IMyDependency _myDependency;

    public MyService(IMyDependency myDependency)
    {
       _myDependency = myDependency;
    }

    public void MyHandler(string param)
    {
       // work
    }

    public void AnotherMethod()
    {
       _myDependency.DoWork(MyHandler);
    }
}

如何对 MyHandler 作为 DoWork() 的参数进行单元测试?

因为你使用的是Moq,你可以这样写测试:

[TestMethod]
public void DoWorkWasCalledWithCorrectParameters()
{
    var mock = new Moq.Mock<IMyDependency>();
    var myService = new MyService(mock.Object);
    myService.AnotherMethod();
    // verify that method was called once and with correct parameter:
    mock.Verify(x => x.DoWork(myService.MyHandler), Moq.Times.Once);
}