我有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。
谢谢,
答案 0 :(得分:1)
你所展示的内容似乎没有任何意义。
您的测试代码中只有嘲笑 - 根本没有真正的实现。
你不仅没有测试任何真实的东西,而且由于你使用的是模拟,你甚至可以决定你的假装测试是否会失败。
要做你想要的(我认为),只需创建一个ActionAlert(一个来自真实代码,而不是一个模拟)然后创建第二个ActionAlert,其属性应使用Equals方法使其相等。传递第二个ActionAlert并声明结果为true(可能最好使用Assert.True(),因为它更能表达意图)。
然后,当测试Equals方法返回false时,使用ActionAlerts编写测试,其中的属性使它们不等于。根本不需要嘲笑。
你需要模拟的地方是你在被测试的类中有依赖性的地方,你想要断言某些行为(有一种依赖方法以某种方式调用),或者你想要一些预先设定的行为(制作一个方法在调用时返回一定值。