2

我有我正在尝试测试的 Equals 方法。如果传递给 is 的对象与此对象相同,则此方法返回 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。

谢谢你,

4

1 回答 1

1

你所展示的似乎根本没有任何意义。

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

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

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

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

您需要模拟的地方是您在被测类中有依赖关系的地方,您想要断言某些行为(是否以某种方式调用了依赖方法)或者您想要一些预定义的行为(使方法返回调用时的特定值)。

于 2011-06-01T21:06:22.167 回答