【问题标题】:Define method implementation in mock object using Moq with return type使用返回类型的 Moq 在模拟对象中定义方法实现
【发布时间】:2015-03-22 17:19:15
【问题描述】:

我的问题基于以下线程中给出的已接受答案

Define method implementation in mock object using Moq

在此示例中,RequestSenderHelpers.Send() 的返回类型为“void”。如果(实现/定义的方法的)返回类型是 int 或任何其他类型,我如何使其工作?

【问题讨论】:

  • @mashet 基本上,我想在以下行中设置回调方法: sender.Setup(s => s.Send(It.IsAny(), It.IsAny(), It.IsAny())).Callback(RequestSenderHelpers.Send);由于 Send() 现在返回一个值,我会收到一条错误消息,例如“void Send(...) expected”谢谢
  • 以下是我完成我想做的事情的解决方法。我相信我不能使用 Callback() 方法指定返回类型,因为它需要 Action 作为参数,而不是支持返回类型的 Func sender.Setup(s => s.Send(It.IsAny(), It.IsAny(), It.IsAny())).Callback((request, callback, obj) =>RequestSenderHelpers.Send(request, callback, obj));
  • 没错。如果要返回值,则必须使用 Func 而不是 Action。 Action 仅适用于 void 方法。问候 ;)

标签: unit-testing mocking moq


【解决方案1】:

试试这个:

var result = x.Send(It.IsAny<HttpWebRequest>(), It.IsAny<AsyncCallback>(), It.IsAny<object>());
Assert.IsInstanceOfType(result, typeof(yourTypeHere));

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-26
    • 1970-01-01
    • 2013-03-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多