gpt4 book ai didi

.net - 使用 Moq 平等地设置模拟的所有方法

转载 作者:行者123 更新时间:2023-12-04 07:54:46 26 4
gpt4 key购买 nike

假设我有界面

public interface A {
int Foo1();

int Foo2();

int Foo3();
}

以及带有模拟的测试方法(使用 Moq ),例如
Mock<A> mock = new Mock<A>();

现在基本上有两种测试场景:

场景一

如果接口(interface)实现在任何方法上引发特定异常,我想测试我的被测系统会做什么。所以我想设置所有方法来抛出相同的异常,比如
mock.Setup(x => x.Foo1()).Throws(new Exception());
mock.Setup(x => x.Foo2()).Throws(new Exception());
mock.Setup(x => x.Foo3()).Throws(new Exception());

场景二

如果方法返回任何数字,我想测试我的被测系统会做什么。所以我可以考虑像这样设置模拟
mock.Setup(x => x.Foo1()).Returns(1);
mock.Setup(x => x.Foo2()).Returns(1);
mock.Setup(x => x.Foo3()).Returns(1);

原因:
我对被测系统有许多不同的单元测试。其中一些是对业务逻辑的测试,它会产生影响,例如返回什么值。但有些只是一般行为的小测试,例如如果被测系统抛出异常,如果使用的组件之一抛出异常。或者相反,如果所有组件都按预期运行,则被测系统不会抛出异常。对于这些小测试,我现在正在使用上面的代码。

问题:
是否有更聪明的方法来以相同的方式初始化 Mock 的所有(匹配)方法?就像是
mock.SetupAll().Throws(new Exception());

或者
mock.SetupAll<int>().Returns(1);

(这意味着:设置那些返回类型为 int 的方法)?

最佳答案

这可以通过 SetReturnsDefault 来实现, 像:

mock.SetReturnsDefault(1);

SetReturnsDefault在来源中了解更多信息: Moq on github

关于.net - 使用 Moq 平等地设置模拟的所有方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19254646/

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