我是RhinoMocks的新手,我正在尝试编写一个测试,正如我所展示的,我有这样的类
public class A
{
public void methodA(){}
}
public class B
{
public void methodB(A a)
{
a.methodA();
}
}我试着像这样测试它
A a = MockRepository.GenerateMock<A>();
public void ShouldTest()
{
B b = new B();
b.methodB(a);
a.AssertWasCalled(x=>x.methodA());
a.VerifyAllExpectations();
}但它给出了如下所示的错误: System.InvalidOperationException :没有设置要验证的预期,请确保操作中的方法调用是虚拟(C#) /可覆盖(VB.Net)方法调用。
那我怎么测试methodB呢??有人能帮忙吗??
发布于 2012-01-23 01:42:05
Rhino mock在调用MockRepository.Generate ***方法时创建代理类。这意味着它扩展了你的类型。如果你没有声明任何抽象,你就不能进行任何派生,这在任何mocking框架中都是必不可少的。
你可以做两件事
创建代理
示例代码
public interface IA { void methodA();}
public class A:IA{public void methodA() { }}
public class B
{
public void methodB(IA a)
{
a.methodA();
}
}
[TestFixture]
public class Bar
{
[Test]
public void BarTest()
{
//Arrange
var repo = MockRepository.GenerateMock<IA>();
//Act
B b = new B();
b.methodB(repo);
//Assert
repo.AssertWasCalled(a => a.methodA());
repo.VerifyAllExpectations();
}
}发布于 2012-01-23 01:18:39
您拥有的是没有虚方法和接口的具体类。你不能嘲笑任何东西。
更新:
这里有一种方法:
public interface IA
{
void methodA();
}
public class A : IA
{
public void methodA(){}
}
public class B
{
public void methodB(IA a)
{
a.methodA();
}
}然后使用
IA a = MockRepository.GenerateMock<IA>();https://stackoverflow.com/questions/8962812
复制相似问题