C# 如何对传递到模拟存储库的对象进行断言
我在SUT中有一个如下的代码构造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
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);
}