gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 14:17:45 26 4
gpt4 key购买 nike

我正在尝试测试 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com