如何在RhinoMocks中的另一个方法中调用方法?

时间:2010-05-05 16:02:41

标签: rhino-mocks assert

我有一个有两种方法的类。一种方法需要调用另一种方法,在我的测试中,我想声明它被调用。

public class Tasks : ITasks
{
  public void MethodOne()
  {
    MethodTwo(1);
  }

  public int MethodTwo(int i)
  {
    return i + 1;
  }
}

我想模拟任务并执行tasks.AssertWasCalled(x => x.MethodTwo(1))之类的操作。必须 MethodTwo 是虚拟的吗?

2 个答案:

答案 0 :(得分:1)

你正在寻找的概念是partial mocks(这显示了旧的语法,但我不记得我头脑中的新词)。你应该阅读它。基本上你在Tasks(而不是ITasks)上创建模拟并告诉它只模拟MethodTwo(它需要是虚拟的)。

然而......你可能想重新考虑你的设计。什么是ITasks?有什么作用?它们是不同的实际任务吗?你有什么理由想要他们在同一个班级吗?我的理解是,只有当你需要测试遗留组件时才包含部分模拟 - 我从来没有找到它的用途。

答案 1 :(得分:0)

当然我当时的想法是有缺陷的。我应该嘲笑ITasks,而不是实现(任务):

ITasks tasks = MockRepository.GenerateMock<ITasks>();
tasks.AssertWasCalled(x => x.MethodTwo(Arg<int>.Is.Equal(1)));