Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/325.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Moq是否可以返回传递到对具有void返回类型的Mock调用的Setup方法中的真实对象实例?_C#_Moq - Fatal编程技术网

C# Moq是否可以返回传递到对具有void返回类型的Mock调用的Setup方法中的真实对象实例?

C# Moq是否可以返回传递到对具有void返回类型的Mock调用的Setup方法中的真实对象实例?,c#,moq,C#,Moq,我有一个这样的电话: _session.Setup(session => session.SaveOrUpdate(It.IsAny<Foo>())) 在此场景中,foo始终返回null,即使服务层中的实际foo已填充 编辑: 这不是上述副本的副本,因为此问题的不同之处在于SaveOrUpdate返回void。在据称重复的文章中,这些方法返回的不是void。因此,我需要从“Returns”不是有效选项的方法中获取变量,这是其他文章中的解决方案。在这里引导一些精神力量 看起来您

我有一个这样的电话:

_session.Setup(session => session.SaveOrUpdate(It.IsAny<Foo>()))
在此场景中,
foo
始终返回
null
,即使服务层中的实际
foo
已填充

编辑: 这不是上述副本的副本,因为此问题的不同之处在于SaveOrUpdate返回void。在据称重复的文章中,这些方法返回的不是void。因此,我需要从“Returns”不是有效选项的方法中获取变量,这是其他文章中的解决方案。

在这里引导一些精神力量

看起来您可能正在使用,如果是,则表示
SaveOrUpdate
具有以下签名:

void SaveOrUpdate(object obj);
因此,为了获得
Foo
对象,需要将
object
指定为类型参数,例如:

_session.Setup(session => session.SaveOrUpdate(It.IsAny<object>()))
        .Callback<object>(objectBeingSaved => foo = objectBeingSaved as Foo);
\u session.Setup(session=>session.SaveOrUpdate(It.IsAny()))
.Callback(objectBeingSaved=>foo=objectbeingsaveasfoo);

看起来不错。由于没有调用回调,您确定
foo
为空吗?还是因为
as
返回
null
?可以在回调lambda中设置断点进行检查吗?是的,foo返回null。即使我把它作为一个没有任何铸造的对象/“as”。啊,我以前也没想过把IsAny换成IsAny。现在可以了。谢谢
_session.Setup(session => session.SaveOrUpdate(It.IsAny<object>()))
        .Callback<object>(objectBeingSaved => foo = objectBeingSaved as Foo);