我使用带有AutoMoq的AutoFixture。我尝试创建一个具有getter属性但没有setter的类的假实例。我期望AutoFixture配置模拟器,因此即使没有setter也会返回给定的值。AutoFixture.AutoMoq:将值设置为只读属性
我的代码是类似的东西:
var data = new List<Data>() { new Data() };
var userManager = fixture.Build<IRepository>()
//.With(x => x.Data, data)
.CreateAnonymous();
Mock.Get(userManager).Setup(x => x.Data).Returns(data);
不幸的是,“有了”,因为汽车灯具说,数据不具有任何二传手它为什么我设置数值方法不会在这种情况下工作之后直接调用模拟。
有没有一种方法,自动夹具可以自己做到这一点,所以我不需要最后一行代码?
编辑:我犯了一个错误,代码示例不起作用。它应该是
var data = new List<Data>() { new Data() };
var userManager = fixture.CreateAnonymous<IRepository>();
Mock.Get(userManager).Setup(x => x.Data).Returns(data)
尽管如此,如果将有一个虚假实例的方法会很好。
在某些情况下,你可能想要Moq的'SetupGet'而不是'Setup'(但这不是你的问题)。 FWIW我非常确定AF内置的东西不会处理你要找的东西(这似乎不太适合建立状态,更多的是可以改变/替换读取方)。你能否确认你没有处理那些有明确方法推入状态的对象(例如通过ctor params?) – 2013-03-11 20:59:31
相关:http://stackoverflow.com/questions/12963019/how-do-i-get-autofixture -automoq-return-results-from-injected-services-in-an – 2013-03-11 21:14:06