gpt4 book ai didi

c# - 基于对象参数的模拟方法返回

转载 作者:太空宇宙 更新时间:2023-11-03 20:53:55 24 4
gpt4 key购买 nike

我有以下(简化的)代码:

public string methodName(ClassType object)
{
If(object.value == 1)
return "Yes";
else If(object.value == 2)
return "No";
else
return "whatever";
}

然后我在单元测试中调用这个方法,并且需要根据对象值模拟返回类型:

_Service.Setup(x => x.methodName(new methodName { value = 1}).Returns("Yes");
_Service.Setup(x => x.methodName(new methodName { value = 2}).Returns("No");

我知道我写的是错误的 - 但我怎样才能做到这一点?

最佳答案

您走在正确的轨道上。使用 Moq,您需要准确指定哪个设置应与每个输入相匹配。你这样做:

_Service.Setup(x => x.methodName(It.IsAny<ClassType>())).Returns("whatever");
_Service.Setup(x => x.methodName(It.Is<ClassType>(o => o.value == 1))).Returns("Yes");
_Service.Setup(x => x.methodName(It.Is<ClassType>(o => o.value == 2))).Returns("No");

那里的第一行将模拟设置为在使用任何值调用此方法时返回“whatever”。以下两行覆盖特定值的行为。

我会查看最小起订量的 Quickstart指南了解更多详情,以及 Matching Arguments特别是部分。

关于c# - 基于对象参数的模拟方法返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52518396/

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