gpt4 book ai didi

c# - Moq 使用 ReturnsAsync 并修改 It.IsAny 输入参数

转载 作者:行者123 更新时间:2023-11-30 16:57:49 24 4
gpt4 key购买 nike

在使用 ReturnsAsync 时,我们只能让它返回一个新对象。下面的代码有没有更好/更正确的写法?

在这个例子中,我们有某种存储库,我们的实现接受了一个具有 Id 的 Thing 类型的对象(我们想假装我们的数据库设置了 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;
});

谢谢!

最佳答案

这是我能找到的最好的:

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);
});

它实际上与您的答案相同,只是稍微短了一点。

关于c# - Moq 使用 ReturnsAsync 并修改 It.IsAny 输入参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25997246/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com