【发布时间】:2015-07-28 15:47:53
【问题描述】:
我正在使用第三方库类 Foo,它具有我的类用作依赖项的多个公共方法和属性。
我想测试我的类并模拟Foo 对象,但它没有接口。所以我在想,我可以在我自己的类中继承这个类,提取一个接口,瞧!我会有一个可注入的接口。
...但当然也有并发症。 Foo 有一堆公共字段。这些不能进入接口,所以我必须为字段编写属性包装器。很烦人。
有没有自动化的方法来做到这一点?我有 ReSharper,但似乎没有办法自动执行此操作,这意味着我正在编写很多乏味的代码。
【问题讨论】:
-
你在嘲笑
virtual的方法吗?如果是这样,您可以使用 Rhino Mocks 的PartialMock之类的东西。您将能够覆盖/存根/模拟这些方法并访问公共字段。 -
哈,当然不是……这个库根本不是为了可扩展而设计的,而且我认为作者从来没有写过单元测试……叹息……
-
这个怎么样?创建一个将方法公开为
virtual的包装器,然后使用PartialMock!你用的是什么模拟框架? -
起订量。似乎做了我想做的一切。
-
我没有使用 Moq,但看起来你可以使用
callbase属性进行部分模拟。 stackoverflow.com/questions/4769928/… 所以你可以创建一个包装器,将方法公开为virtual,然后使用一个部分。
标签: c# unit-testing dependency-injection wrapper