gpt4 book ai didi

unit-testing - 如何模拟具有多个 Ref 参数的方法

转载 作者:行者123 更新时间:2023-12-01 12:58:18 24 4
gpt4 key购买 nike

我有这个方法调用

SecurityController.GetUserPermissions( _
HttpContext.Current.User.Identity.Name.ToString, GroupAdmin, GroupTrans)

其中 GroupAdmin 和 GroupTrans 是字符串数组,是 ByRef 参数。

所以基本上它所做的是,给定一个用户名,填写管理员权限数组和允许的交易数组。

这是遗留代码,我无法更改。

这是我测试的一部分:

var moqSecurityController = new Mock<ISecurityController>();
var refParam = new string[1] {"test"};
moqSecurityController
.Setup(x => x.GetUserPermissions("Bob", ref refParam, ref refParam))
.Callback((string userName, string[] groupAdmin, string[] groupTrans) =>
{
groupAdmin[0] = "Test a";
groupTrans[0] = "Test b";
});

最后我希望在 GroupAdmin 和 GroupTrans 中进行“测试”,但是我得到了一个错误:

Invalid callback. Setup on method with parameters (String,String[]&,String[]&)
cannot invoke callback with parameters (String,String[],String[])

我错过了什么?谁能帮我模拟这个?

谢谢

最佳答案

经过一些“艰苦”的工作找到了解决方案

var moqSecurityController = new Mock<ISecurityController>();
moqSecurityController
.Setup(x => x.GetUserPermissions(
It.IsAny<string>(), ref groupAdmin, ref groupTrans))
.Returns((string s, string[] a, string[] b) =>
{
a[0] = "TestAdmin";
b[0] = "TestTrans";
return 0;
});

问题是错误地使用了 Callback 而不是 Returns

关于unit-testing - 如何模拟具有多个 Ref 参数的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8338519/

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