ehh*_*ehh -1 c# unit-testing rhino-mocks
我知道模拟一个具体的类是不可能的,但只有接口和抽象类.是否有任何方式或任何模式可以绕过这个?
例如,我有以下没有实现任何接口的类.我不想创建一个新的C实例,因为它会在我的单元测试中花费大量时间,我如何模拟它并对Foo()进行单元测试?
public class A
{
public virtual void Foo(){}
}
public class C:A
{
public C()
{
// construction takes lot of time
}
public override void Foo()
{
}
}
Run Code Online (Sandbox Code Playgroud)
谢谢
小智 5
免责声明我在Typemock工作.
我知道模拟一个具体的类是不可能的,但只有接口和抽象类
使用Typemock Isolator,您可以模拟所有内容,从抽象类和接口到密封和静态类.
我改变了你的例子:
public class A
{
public virtual int Foo() { return 0; }
}
public class C : A
{
public C()
{
// construction takes lot of time
}
private int Bar()
{
return 3;
}
public override int Foo()
{
return Bar() + 1;
}
}
[TestClass]
public class Collections
{
[TestMethod]
public void FakingWithIsolatorExample()
{
var fakeC = Isolate.Fake.Instance<C>();
Isolate.WhenCalled(() => fakeC.Foo()).CallOriginal();
Isolate.NonPublic.WhenCalled(fakeC, "Bar").WillReturn(10);
int result = fakeC.Foo();
Assert.AreEqual(11, result);
}
}
Run Code Online (Sandbox Code Playgroud)
评论:
| 归档时间: |
|
| 查看次数: |
736 次 |
| 最近记录: |