none
Moq的callbacks疑问 RRS feed

  • 问题

  • customer.Setup(p => p.GetCall(It.IsAny<string>()))

    .Returns("方法调用").Callback((string s) => Console.WriteLine("ok" + s));

    这里的callback用法看不懂,还有,它好像调用了Console.WriteLine("ok" + s), 但我在VS2010环境下,test runner没有打开控制台窗口输出啊。


    2012年8月10日 3:38

答案

  • 你好:)

    CallBack是一个带有string参数的Action,没有返回值。其内部直接调用了Console的方法。我写一个简单代码你看:

    Return方法把string存入一个内存变量中,然后返回这个类的自身;接着传递调用了CallBack方法,执行匿名委托方法输出结果。

    public class Example
        {
            class Program
            {
                private string s = string.Empty;
     
                public Program()
                {
     
                }
                public Program(string sv)
                {
                    s = sv;
                }
                public Program ReturnValue(string value)
                {
                    return new Program(value);
                }
     
                public void CallBack(Action<string> callbackFun)
                {
                    callbackFun(s);
                }
                static void Main(string[] args)
                {
                    Program p = new Program();
                    p.ReturnValue("测试咯……").CallBack((s)=>Console.WriteLine(s));
                }
     
            }
     
        }

    下载MSDN桌面工具(Vista,Win7)
    我的博客园
    慈善点击,点击此处

    2012年8月12日 7:39
    版主

全部回复

  • 忘了说明了,这是Moq的用法
    2012年8月10日 21:26
  • 你好:)

    CallBack是一个带有string参数的Action,没有返回值。其内部直接调用了Console的方法。我写一个简单代码你看:

    Return方法把string存入一个内存变量中,然后返回这个类的自身;接着传递调用了CallBack方法,执行匿名委托方法输出结果。

    public class Example
        {
            class Program
            {
                private string s = string.Empty;
     
                public Program()
                {
     
                }
                public Program(string sv)
                {
                    s = sv;
                }
                public Program ReturnValue(string value)
                {
                    return new Program(value);
                }
     
                public void CallBack(Action<string> callbackFun)
                {
                    callbackFun(s);
                }
                static void Main(string[] args)
                {
                    Program p = new Program();
                    p.ReturnValue("测试咯……").CallBack((s)=>Console.WriteLine(s));
                }
     
            }
     
        }

    下载MSDN桌面工具(Vista,Win7)
    我的博客园
    慈善点击,点击此处

    2012年8月12日 7:39
    版主