如何针对传递给模拟存储库的对象进行断言

How to assert against an object passed to a mock repository

我在 SUT 中有如下代码构造

public class SUT
{

    //...

    public void Process()
    {
            // Does some work and creates new myDto(), and assigns field values.
            Update(myDto);
    }

    private void Update(MyDto myDto)
    {
        _repository.Update(myDto);
    }
}

我在单元测试中通过了 _repository 的模拟。我想在调用 Update(MyDto myDto) 方法

之前验证字段是否设置正确

有没有办法通过mock获取参数对象的引用?

我想对传递对象的字段进行断言myDto

有点像。

Assert.AreEqual(1, myDto.Field1);

如果不是,我有什么选择。

我正在使用 MSTestMoq

Mock<T> 有你可以像这样使用的回调方法;

myMock
   .Setup(x => x.Update(It.IsAny<MyDtoType>()))
   .Callback<MyDtoType>(VerifyDto);

以及验证方法;

public void VerifyDto(MyDtoType dto) 
{
   Assert.AreEqual(1, myDto.Field1);
}