gpt4 book ai didi

moq - 使用 Moq 仅模拟某些方法

转载 作者:行者123 更新时间:2023-12-03 05:36:23 25 4
gpt4 key购买 nike

我有以下方法:

public CustomObect MyMethod()
{
var lUser = GetCurrentUser();
if (lUser.HaveAccess)
{
//One behavior
}
else
{
//Other behavior
}

//return CustomObject
}

我想模拟IMyInterface.GetCurrentUser,以便在调用MyMethod时我可以到达其中一个代码路径来检查它。如何使用起订量做到这一点?

我正在做以下事情:

var moq = new Mock<IMyInterface>();
moq.Setup(x => x.GetCurrentUser()).Returns(lUnauthorizedUser);

//act
var lResult = moq.Object.MyMethod();

但由于某种原因 lResult 始终为 null,当我尝试在调试中进入 MyMethod 时,我总是跳到下一条语句。

最佳答案

这称为部分模拟,我知道在 Moq 中执行此操作的方式需要模拟类而不是接口(interface),然后将模拟对象上的 CallBase 属性设置为 true .

这需要将您正在测试的类的所有方法和属性设为虚拟。假设这不是问题,您可以编写如下测试:

var mock = new Mock<YourTestClass>();
mock.CallBase = true;
mock.Setup(x => x.GetCurrentUser()).Returns(lUnauthorizedUser);
mockedTest.Object.MyMethod();

关于moq - 使用 Moq 仅模拟某些方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4769928/

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