Moq允許模擬受保護的虛擬成員(see here)。在FakeItEasy中可以做到這一點嗎?如何在FakeItEasy中模擬受保護的虛擬成員?
8
A
回答
24
它可以完成,但它不能開箱即用。訣竅是實現IFakeObjectCallRule並通過Fake.GetFakeManager(foo).AddRule(myRule)將其添加到您的假。
我想,雖然實現這個功能,這將是這樣的:
A.CallTo(富).WhereMethod(X => x.Name == 「MyProtectedMethod」)返回(」。隨你」);
儘管如此,語法還不完善。
編輯 上面提到的功能,現在已經實現:
A.CallTo(foo).Where(x => x.Method.Name == "MyProtectedMethod").WithReturnType<int>().Returns(10);
12
除了帕特里克的答案,我認爲這將是在這個崗位相關的補充,你怎麼能嘲笑一個保護性的提示構件:
A.CallTo(foo).Where(x => x.Method.Name == "get_MyProtectedProperty").WithReturnType<int>().Returns(10);
這實際上是如何反射對待「吸氣劑」性質的方法。
希望它能幫助:)
相關問題
- 1. 如何用Rhino.Mocks模擬受保護的虛擬成員?
- 2. RhinoMocks - 嘲弄受保護的虛擬成員
- 3. 如何模擬受保護的字段?
- 4. 什麼是受保護的虛擬新
- 5. NHibernate的例外:方法Add應該是「公共/受保護的虛擬」或「受保護的內部虛擬」
- 6. 模擬受保護的方法
- 7. FakeItEasy - 如何測試虛擬方法
- 8. 如何在Dart中模擬受保護的方法?
- 9. 在C++中模擬一個類的虛擬靜態成員?
- 10. C++從父虛擬成員調用子虛擬成員
- 11. 如何讀出受保護的成員
- 12. 如何訪問受保護的成員
- 13. 如何在受測試的方法中模擬受保護/私有方法?
- 14. 如何在C#中模擬類成員?
- 15. 非虛擬成員的虛擬和繼承成本?
- 16. 演員派生虛擬覆蓋基地純虛擬成員
- 17. 語法虛擬成員
- 18. 虛擬非方法成員
- 19. 如何模擬受保護的初始化對象
- 20. 如何使用NSubstitute模擬受保護的方法
- 21. 如何使用moq設置受保護方法的模擬值?
- 22. 如何使用EasyMock來模擬受保護的方法?
- 23. 如何使用FakeItEasy模擬Request.IsAjaxRequest()爲true?
- 24. 使用虛擬受保護的工廠方法來模擬在類中創建的對象?
- 25. 有沒有用於使受保護的析構函數虛擬?
- 26. 通過使用受保護的虛擬隱藏實現細節
- 27. 嘲笑Moq中的虛擬成員
- 28. 虛擬不必要的保護功能
- 29. 密封類中的受保護成員
- 30. 虛擬機受保護後向VM添加新磁盤
真棒。非常感謝新功能。現在我可以再次刪除我自己的規則。 – 2011-04-11 10:30:24
我嘗試了上面提供的代碼,但MyProtectedMethod方法仍在調用中。我希望它能夠返回假的返回值,但不能調用原始方法。難道我做錯了什麼? – stusherwin 2011-05-16 13:13:29
@stusherwin也許這個方法不是虛擬的? – 2012-03-23 07:26:04