gpt4 book ai didi

c# - 模拟框架如何工作?

转载 作者:太空狗 更新时间:2023-10-29 20:13:53 25 4
gpt4 key购买 nike

大多数模拟框架只能模拟接口(interface),有些可以模拟类的虚拟方法。一些 Java 模拟框架甚至能够模拟静态类。

例如犀牛模拟:

var mock = MockRepository.GenerateMock<..>();

generate mock 方法中有什么“魔力”?C# 模拟框架不允许模拟静态类是有原因的吗?或者这只是一个“设计选择”?

最佳答案

研究这些框架的源代码并自己找到答案,其实是一件非常有趣和迷人的事情。 Rhino Mocks是开源的,以及Moqmany others .我绝对会推荐深入其中之一。

至于内部实现(来自 here ):

However, the framework can't mock non-virtual methods, so we'd need to make TouchIron method virtual. The reason for that lies deep inside: Rhino Mocks uses Castle Dynamic Proxy to handle proxying the types it needs to mock, and Dynamic Proxy cannot intercept calls to non-virtual, non-abstract methods.

关于c# - 模拟框架如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15486217/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com