我是犀牛模拟的新手并且在C#中嘲笑但不是一般的。我正在为类MyClass
编写单元测试,它在内部创建其他对象作为私有字段。我已经单独测试了这些类,但没有MyClass
如何与它们进行交互...
class MyClass
{
public void Method1()
{
var o = new OtherClass();
o.Method2();
o.Method3();
}
}
请注意,我没有将OtherClass
作为ctor参数传递,我真的不想...创建这些对象是类所做的事情,我真的不希望外部代理注入它们
Rhino Mocks是否允许我以某种方式在单元测试中模拟OtherClass
这个场景中,因此我可以确定实例是否已正确创建并进行交互?
答案 0 :(得分:1)
不,Rhinomocks嘲笑不支持此功能。 Rhinomocks / Moq / FakeItEasy / NSubstitute都是基于代理的工具,这意味着他们不能在不重构的情况下隔离您的代码。
为了能够在不进行重构的情况下进行隔离,您需要使用代码编织工具,例如Typemock Isolator,Msfakes等等。
不知何故,在同一个项目中将2个模拟框架组合在一起,在社区中并不是那么受欢迎,但是当我在.net世界时,我通常将Rhinomocks和Msfakes结合在一起;
答案 1 :(得分:1)
免责声明我在TypeMock工作。
使用Typemock Isolator时伪造未来的实例非常简单,实际上它可以在一行中完成:
var classUnderTest = new MyClass();
// Faking future OtherClass
var fakeOther = Isolate.Fake.NextInstance<OtherClass>();
您可以阅读更多相关信息here。