如何解决Moq ReturnAsync无法将Lambda表达式转换为类型“ Foo”,因为它不是委托类型
我正在尝试设置一个模拟返回,该返回返回传递给它的参数。
我要模拟的方法签名:
public async Task<Foo> SendFoo(Foo foo)
我如何模拟它:
var mock = new Mock<FooClient>();
mock.SetupSequence(m => m.SendFoo(It.IsAny<Foo>())).ReturnsAsync<Foo>(foo => Task.Fromresult(foo));
我收到以下错误消息:“ 无法将lambda表达式转换为类型'Foo',因为它不是委托类型”。
我在做什么错了?
解决方法
通过FooClient上的界面,我可以运行该
public interface IFooClient
{
Task<Foo> SendFoo(Foo foo);
}
public class FooClient
{
public async Task<Foo> SendFoo(Foo foo)
{
return new Foo();
}
}
和测试
[Test]
public async Task Test()
{
var fooInTest = new Foo();
var mock = new Mock<IFooClient>();
mock.SetupSequence(m => m.SendFoo(fooInTest)).Returns(() => Task.FromResult(fooInTest));
var result = await mock.Object.SendFoo(new Foo());
Assert.NotNull(result);
Assert.IsTrue(result is Foo);
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。