我有一个电话:
_session.Setup(session => session.SaveOrUpdate(It.IsAny<Foo>()))
我想检索运行测试以进行验证时传递给Foo
的{{1}}实例的副本。如何才能将准确SaveOrUpdate
的副本复制到我的测试中?
我尝试使用Foo
,但也许这不是这样做的方法吗?或者也许我做错了......不确定,但我可以使用一些帮助试图弄清楚这是否可能以及如何做到这一点。
.Callback
在这种情况下,即使填充了服务层中的真实Foo foo;
_session.Setup(session => session.SaveOrUpdate(It.IsAny<Foo>()))
.Callback<Foo>(fooInstanceBeingSaved => foo = fooInstanceBeingSaved as Foo);
,也会始终返回foo
null
。
编辑: 这不是所述副本的副本,因为此问题的不同之处在于SaveOrUpdate返回void。在据报道的重复文章中,这些方法返回的不是void。因此,我需要从一个方法中获取变量,其中&#34;返回&#34;不是一个有效的选项 - 这是其他文章中的解决方案。
答案 0 :(得分:3)
在这里引导一些心灵力量......
您可能正在使用NHibernate,如果这样,则表示SaveOrUpdate
具有此签名:
void SaveOrUpdate(object obj);
因此,为了获取Foo
对象,您需要指定object
作为类型参数,例如:
_session.Setup(session => session.SaveOrUpdate(It.IsAny<object>()))
.Callback<object>(objectBeingSaved => foo = objectBeingSaved as Foo);