c# - 单元测试时,如何从异步方法模拟返回 null?

标签 c# unit-testing asp.net-mvc-5 async-await moq

通常,我会像这样模拟我的 repo:

var repository = new Mock<ISRepository>();
repository.Setup(r => r.GetMemberAsync(email))
    .Returns(Task.FromResult(new Member
    {
        FirstName = firstName,
        LastName = lastName
    }));

但是,在我的代码中,我检查是否找不到该成员,即 GetMemberAsync 返回 null。我该如何模拟这个?

我试过:

var repository = new Mock<ISRepository>();
repository.Setup(r => r.GetMemberAsync(email))
    .Returns(Task.FromResult<object>(null));

但是我得到一个编译错误。

最佳答案

您收到编译器错误,因为您返回的任务与异步方法返回的类型不匹配。你应该返回 Task<Member>而不是简单的 Task<object> :

repository.Setup(r => r.GetMemberAsync(email)).Returns(Task.FromResult<Member>(null));

关于c# - 单元测试时,如何从异步方法模拟返回 null?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33356808/

相关文章:

c# - 给对象唯一的 ID onStart

c# - 从Wav文件中删除秒的前.5

typescript - 在 MVC5 cshtml 文件中调用 Typescript 方法,使用 webpack 捆绑

asp.net-mvc - Request.Files.Count 在 MVC 5 中上传图像时始终为 0

unit-testing - 如何模拟在 module.run Angular 应用程序中执行的 http 调用?

c# - MVC 5 自定义 AuthorizeAttribute

c# - Microsoft.Practices.Unity 无处可寻

c# - 使用 Reactive Extensions 在 TextChanged 上搜索

javascript - 单元测试时模拟 ES6 依赖关系

javascript - 在 React JS 中使用 Jest 修复单元测试错误