主页>技术社区>编程问答

Moq ReturnAsync无法将Lambda表达式转换为类型“ Foo”,因为它不是委托类型

eIT.com.cn 2023/3/11 8:27:15 阅读 4 次

打印


如何解决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.Fresult(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);   }





相关内容


热门栏目


特别声明


最新资讯
热讯排行



合作媒体友情链接
生活常识小贴士 软件开发教程 智慧城市生活网 息县通生活服务[移动版] 息县商圈[移动版] 美食菜谱
健康养生 法律知识 科技频道 电影影讯 留学考研学习 星座生肖|解梦说梦




关于我们 | 联系我们 | 合作媒体 | 使用条款 | 隐私权声明 | 版权声明

      Copyright © 2023 eIT.com.cn. All Rights Reserved. 豫ICP备2022012332号