C# 如何对传递到模拟存储库的对象进行断言

C# 如何对传递到模拟存储库的对象进行断言,c#,unit-testing,mocking,moq,assert,C#,Unit Testing,Mocking,Moq,Assert,我在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) { _rep

我在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);
    }
}
我在单元测试中通过了
\u存储库
的模拟。我想在调用
Update(MyDto MyDto)
方法之前验证字段是否设置正确

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

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

差不多

Assert.AreEqual(1, myDto.Field1);
如果没有,我有什么选择

我正在使用
MSTest
Moq
Mock
的回调方法,您可以这样使用

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

您可以在回调中捕获传递的模型并断言这些值。您还可以验证提供给存储库的参数
public void VerifyDto(MyDtoType dto) 
{
   Assert.AreEqual(1, myDto.Field1);
}