假设我有一个类“ClassA”,它对类“ClassB”(注入到ClassA的ctr)有依赖性。我想嘲笑ClassB,以便我可以单独测试ClassA。这两个班都是内部的。用Moq模拟内部类进行单元测试
纠正我,如果我错了,但它看起来像Moq只能嘲笑一个类,如果它是公开的,它有一个公共无参数构造函数,被嘲笑的方法是public virtual
。我不想让这些课程公开显示。我是否错过了Moq的一些东西,或者它不适合我想要做的事情?
我想我可以创建一个ClassB实现的接口(比如说“IClassB”),将它注入到ClassA中,然后模拟接口。 ClassB仍然可以是内部的(尽管我意识到接口方法必须公开)。虽然这会起作用,但我对创建大量接口感到不安,它的唯一目的是支持单元测试嘲弄。思考?
有用的知道,谢谢。不过,我现在决定让这些课程公开(至少是那些正在测试的课程)。我想我已经试图将所有东西都放在内部,但它只是一个桌面应用程序,所以它不像在一个给客户的组装/ API中那样重要。 –
非常有用的帖子,我很InternalsVisibleTo(“IntegrationTests”)不能正常工作。然后它有道理,它不是我的程序集访问它,而是Castle的动态创建的程序集。 –