使用ReturnsAsync时,我们只能让它返回一个新对象。是否有更好/更正确的方法来编写下面的代码?
在这个例子中,我们有一些存储库,我们的实现接受一个Thing类型的对象,它有一个Id(我们想假装我们的数据库设置了Id)属性:
var repo = new Mock<IRepositoryOfThings>();
//Is there a better way to do this perhaps using ReturnsAsync??
repo.Setup(r => r.Add(It.IsAny<Thing>())).Returns(
(Thing x) =>
{
var tcs = new TaskCompletionSource<Thing>();
x.Id = Guid.NewGuid().ToString();
tcs.SetResult(x);
return tcs.Task;
});
谢谢!
答案 0 :(得分:2)
这是我能找到的最好的:
var repo = new Mock<IRepositoryOfThings>();
repo.Setup(r => r.Add(It.IsAny<Thing>())).Returns(
(Thing x) =>
{
x.Id = Guid.NewGuid().ToString();
return Task.FromResult(x);
});
不幸的是,这与你的答案实际上是一样的。
答案 1 :(得分:0)
您可以仅初始化Thing的实例并在设置中返回该实例。
ChildForm = new ChildForm();
ChildForm.Show(this);