我正在尝试测试 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。
谢谢你,
最佳答案
您所展示的内容似乎根本没有任何意义。
您的测试代码中只有模拟 - 根本没有真正的实现。
您不仅没有测试任何真实的东西,而且由于您使用的是模拟,您甚至可以决定假装测试是否应该失败。
要执行(我认为)您想要的操作,只需创建一个 ActionAlert(一个来自您的真实代码,而不是一个模拟代码),然后创建第二个 ActionAlert,其属性应使用您的 Equals 方法使其相等。传递第二个 ActionAlert 并断言结果为真(可能最好使用 Assert.True() 因为它更能表达意图)。
然后在测试 Equals 方法是否返回 false 时,使用 ActionAlerts 编写测试,使其具有使它们不等于的属性。根本不需要模拟。
你需要模拟的地方是你在被测类中有依赖关系的地方,你想要断言一些行为(以某种方式调用依赖方法)或者你想要一些预定义的行为(制作一个方法在调用时返回特定值)。
关于c# - 不同的模拟对象来比较单元测试中的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6207625/