不同的模拟对象来比较单元测试中的对象

时间:2011-06-01 20:59:28

标签: c# .net xunit.net xunit

我有Equals方法,我正在尝试测试。如果传递给的对象与此对象相同,则此方法返回true。

我测试真实情况如下。

        var mocks = new MockRepository();
        var mockActionAlert = mocks.StrictMock<ActionAlert>();
        var mockActionAlert2 = mocks.StrictMock<ActionAlert>();
        bool comparer = mockActionAlert.Equals(mockActionAlert2);
        Assert.Equal(true, comparer);

但是,如何获得一个不同的模拟对象来测试equal方法返回false。

谢谢,

1 个答案:

答案 0 :(得分:1)

你所展示的内容似乎没有任何意义。

您的测试代码中只有嘲笑 - 根本没有真正的实现。

你不仅没有测试任何真实的东西,而且由于你使用的是模拟,你甚至可以决定你的假装测试是否会失败。

要做你想要的(我认为),只需创建一个ActionAlert(一个来自真实代码,而不是一个模拟)然后创建第二个ActionAlert,其属性应使用Equals方法使其相等。传递第二个ActionAlert并声明结果为true(可能最好使用Assert.True(),因为它更能表达意图)。

然后,当测试Equals方法返回false时,使用ActionAlerts编写测试,其中的属性使它们不等于。根本不需要嘲笑。

你需要模拟的地方是你在被测试的类中有依赖性的地方,你想要断言某些行为(有一种依赖方法以某种方式调用),或者你想要一些预先设定的行为(制作一个方法在调用时返回一定值。