如何使用 Mock.Of() 模拟没有默认构造函数的类?

2024-04-09

使用起订量,我需要在现有的基础上创建一个假的class(不是接口*)有没有默认的ctor.

我可以使用“传统”语法来做到这一点:

var fakeResponsePacket = new Mock<DataResponse>(
    new object[]{0, 0, 0, new byte[0]}); //specify ctor arguments

fakeResponsePacket.Setup(p => p.DataLength).Returns(5);

var checkResult = sut.Check(fakeResponsePacket.Object);

我的问题是:有没有办法使用较新的方法来做同样的事情Mock.Of<T>()句法 ?

据我所见,只有两个重载Mock.Of<T>,都不接受参数:

//1 no params at all
var fakeResponsePacket = Mock.Of<DataResponse>(/*??*/);
fakeResponsePacket.DataLength = 5;

//2 the touted 'linq to Moq'
var fakeResponsePacket = Mock.Of<DataResponse>(/*??*/
    p => p.DataLength == 5
);

var checkResult = sut.Check(fakeResponsePacket);

--
* I wanted使用接口。但后来现实发生了。我们先不深究。


不,似乎没有办法做到这一点。

旁注:在“旧”语法中,您可以只写:

new Mock<DataResponse>(0, 0, 0, new byte[0]) //specify ctor arguments

因为数组参数有params (a 参数数组 https://msdn.microsoft.com/en-us/library/w5zay9db.aspx).

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 Mock.Of() 模拟没有默认构造函数的类? 的相关文章

随机推荐