如何在NMock中模拟GetType()方法

时间:2009-07-22 10:32:56

标签: c# unit-testing nmock

我有一些像

这样的生产代码
private bool IsTypeEqual(object theFirstObject, object theSecondObject)
{
       if(theFirstObject.GetType()==theSecondObject.GetType())
       {
               return true;
       }
       else
       {
                return false;
       }
}

现在我必须为此代码编写单元测试用例。我正在使用NMock来创建 宾语。因此,当我传递两个不同类的对象时,它应该转到其他部分。 但实际上,因为我正在嘲笑这两个对象,所以GetType()返回两个对象的MockObject类型。我该如何解决这个问题。

2 个答案:

答案 0 :(得分:0)

你不需要模拟“theFirstObject”或“theSecondObject”。你真的不在乎这些类会发生什么,你只需要断言结果是正确的。

如果我是你,我会传递不同的类型,并断言它是真还是假:

Assert.AreEqual(false, IsTypeEqual("HelloWorld", 192));

Assert.AreEqual(true, IsTypeEqual("Hello", "World"));

答案 1 :(得分:-1)

我希望这段代码可以帮到你。

private bool IsTypeEqual<TMockedType>(object theFirstObject, object theSecondObject)
{
    Matcher matcher = Is.TypeOf(typeof(TMockedType));

    return matcher.Matches(theFirstObject) && matcher.Matches(theSecondObject);
}