我在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);
如果没有,我有什么选择。
我正在使用MSTest
和Moq
。
Mock<T>
有一个回调方法,您可以这样使用它;
myMock
.Setup(x => x.Update(It.IsAny<MyDtoType>()))
.Callback<MyDtoType>(VerifyDto);
以及验证方法;
public void VerifyDto(MyDtoType dto)
{
Assert.AreEqual(1, myDto.Field1);
}