gpt4 book ai didi

c# - 如何使用自定义委托(delegate)对没有参数的方法进行 stub ?

转载 作者:行者123 更新时间:2023-12-03 10:07:06 25 4
gpt4 key购买 nike

我正在尝试 stub 具有 out 的方法参数使用 RhinoMock 的 Do方法,但我不断收到消息无法解析符号 outParam。这是 stub 部分:

private static void FakeClientsLoading(MyClass fakeClass, IEnumerable<string> clientsToLoad)
{
fakeClass.Stub(
x =>
x.LoadClientsFromDb(Arg<string>.Is.Anything,
out Arg<object>.Out(null).Dummy))
.Do(
new LoadClientsFromDbAction(
(someString, out outParam ) =>
TestHelper.LoadClients(someString, clientsToLoad)));
}

这是我的自定义委托(delegate)声明:
public delegate void LoadClientsFromDbAction(string s, out object outParam);

我想要实现的是在 LoadClientsFromDb 时运行测试助手方法。被调用。据我了解 outParam应该映射到作为 out 传递的任何内容被调用方法的参数,但它似乎并没有以这种方式工作。

最佳答案

看来我终于找到了我的问题的答案。事实证明,引用 this link 中的第 26.3.1 节:

Specifically, a delegate type D is compatible with an anonymous method or lambda-expression L provided:

If L is a lambda expression that has an implicitly typed parameter list, D has no ref or out parameters.



这意味着你需要一个显式类型的参数列表来创建一个带有 out 的 lambda。范围。

不过,这还不是全部。仍然需要为 out 赋值。退出匿名方法时的参数。

最终和工作代码:
private static void FakeClientsLoading(MyClass fakeClass, IEnumerable<string> clientsToLoad)
{
fakeClass.Stub(
x =>
x.LoadClientsFromDb(Arg<string>.Is.Anything,
out Arg<object>.Out(null).Dummy))
.Do(
new LoadClientsFromDbAction(
(string someString, out object outParam) =>
{
outParam = null;
TestHelper.LoadClients(someString, clientsToLoad);
}
));
}

关于c# - 如何使用自定义委托(delegate)对没有参数的方法进行 stub ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28367507/

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