如果我们有这样的事情:
public class test
{
public void Condition()
{
if (x == y)
{
methodOne();
}
else
{
methodTwo();
}
}
}
如何使用Rhino Mock编写单元测试来断言methodOne
是否被调用?
答案 0 :(得分:3)
您通常不会为您正在测试的类创建模拟。您为其依赖项创建了模拟。
所以,如果您的代码实际上是:
public class Test
{
private readonly IFoo foo;
public Test(IFoo foo)
{
this.foo = foo;
}
public void Condition()
{
if (x == y)
{
foo.MethodOne();
}
else
{
foo.MethodTwo();
}
}
}
...然后为IFoo
创建一个模拟是有意义的,并将其传递给您测试的Test
实例。
虽然部分模拟可能允许您测试同一类中的方法是否被调用,但我通常会避开它。测试您是否可以看到调用MethodOne
或MethodTwo
的效果。
答案 1 :(得分:0)
您可以将MethadOne用作虚拟方法:
public virtual void MethodOne()
{
}
并使用部分模拟:
MockRepository mock = new MockRepository();
var mockTest = mock.PartialMock<Test>();
mockTest.Expect(m => m.MethodOne());
mock.ReplayAll();
mock.VerifyAll();