Moq和回调设置类的值

3

我有一个模拟的DTO类,其中包含通过回调函数设置的属性。以下方法对我有效,但是否有更简洁的方法?

            Mock<MyDto> _MyDto = new Mock<MyDto>();

            _MyDto.Setup(dto => dto).Callback<MyDto>(dto => 
            {   
                dto.FirstName = "John";
                dto.LastName = "Doe";
            });

如果可能的话,我希望在Setup调用中设置这些属性,但它接受一个表达式,我无法在其中执行多行语句。但是我的Linq知识不是百科全书式的,我想知道是否有更好的方法来处理我正在做的事情。


你是在问Lambda表达式是否可以包含多行代码吗? - Daniel Miladinov
@Danny--我在想是否有可能以lambda的形式替换表达式参数(如上所述的Setup())。我知道lambda中可以有多个语句。你能否将lambda转换为表达式树呢? - larryq
考虑到您正在谈论DTO,是否真的需要使用模拟而不是实际实例?它不应该有任何需要模拟的逻辑。 - Pablo Romeo
@Pablo-- 我的 DTO 不仅仅是属性,还有一些其他内容。虽然它并不真正是一个 DTO,但为了这个例子我保持了简单。 - larryq
2个回答

3
根据Moq快速入门指南之属性,您可能需要将代码更改为以下格式:
_MyDto.SetupProperty(dto => dto.FirstName, "John");
_MyDto.SetupProperty(dto => dto.LastName, "Doe");

我还没有机会亲自使用Moq,但这似乎是在Moq中模拟属性的方法。


谢谢你,Danny。这看起来很有前途。 - larryq
抱歉,我以为我已经做了。再次感谢。 - larryq

2
我认为你误解了Setup()方法的用途。你不应该只调用一次并放置所有初始化代码,而是应该为每个需要设置的项分别调用一次。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接