我使用帶有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