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

标签 c# delegates rhino-mocks stubbing

我正在尝试 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/

相关文章:

c# - 想要使用 C# (FtpWebResponse) 从 FTP 读取文件列表,但它返回 HTML

c# - 共享一个类的离散匿名方法?

c# - 犀牛模拟 : How to return conditional result from a mock object method

c# - 使用 Rhino Mocks 对 NpgsqlCommand 进行单元测试

c# - 我是否只需要在 Mock 对象上显式设置预期的返回值?

c# - 有什么想法可以缩短这段代码吗?

c# - Prism wfh 将实体传递给模态视图的模态

c# - 快速 I/O 检查目录是否包含文件

ios - 在 UIBarItem 点击时未调用委托(delegate)

iphone - 设置委托(delegate)时崩溃