【发布时间】:2014-06-17 22:19:11
【问题描述】:
我有这样的电话:
_session.Setup(session => session.SaveOrUpdate(It.IsAny<Foo>()))
当运行测试进行验证时,我想检索传递给SaveOrUpdate 的任何Foo 实例的副本。如何在我的测试中获得准确的 Foo 的副本?
我尝试使用.Callback,但也许这不是这样做的方法?或者也许我做错了......不确定,但我可以使用一些帮助来确定这是否可能以及如何做到这一点。
Foo foo;
_session.Setup(session => session.SaveOrUpdate(It.IsAny<Foo>()))
.Callback<Foo>(fooInstanceBeingSaved => foo = fooInstanceBeingSaved as Foo);
在这种情况下,foo 始终返回 null,即使服务层中的真实 foo 已填充。
编辑: 这不是所述重复项的重复项,因为此问题的不同之处在于 SaveOrUpdate 返回 void。在据报道的重复文章中,这些方法返回的不是 void。因此,我需要从“返回”不是有效选项的方法中获取变量 - 这是其他文章中的解决方案。
【问题讨论】:
-
看起来不错。您确定
foo为 null 是因为未调用回调吗?还是因为as正在返回null?可以在回调 lambda 中放一个断点来检查吗? -
是的,foo 将返回 null。即使我把它作为一个没有任何强制转换/“as”的对象。