首页 新闻 会员 周边

.net-core 中如何使用Moq 来Mock一个void的方法?

0
悬赏园豆:20 [已解决问题] 解决于 2018-03-23 14:48

假设方法为:

public async Task AddItem(string item, int id)
{
    await AddToDataBase();
}

我如果要Mock的话,需要怎么操作?

BUTTERAPPLE的主页 BUTTERAPPLE | 老鸟四级 | 园豆:3190
提问于:2018-03-23 12:15
< >
分享
最佳答案
0

使用

mock.Setup(c => c.AddItem(It.IsAny<string>(), It.IsAny<int>()))
.Verifiable();

似乎是可以的,但是代码中一直出现空引用错误,无奈下只好把方法加上<bool> 使用Returns<> 来返回就成了。

BUTTERAPPLE | 老鸟四级 |园豆:3190 | 2018-03-23 14:01

赞同楼主说的,结贴的时候不要忘了给豆子哦~

Shendu.CC | 园豆:2138 (老鸟四级) | 2018-03-23 14:40

@Shendu.cc: 已发现更加完美的解决办法:

 mockYuanDunService.Setup(c => c.CheckSpam(It.IsAny<string>(), It.IsAny<string>(), It.IsAny<string>(), It.IsAny<string>(), It.IsAny<string>()))
                .Returns(Task.CompletedTask);

.Returns(Task.CompletedTask);这个是重点,
可以参考Setup async Task callback in Moq Framework

BUTTERAPPLE | 园豆:3190 (老鸟四级) | 2018-03-23 14:48

@BUTTERAPPLE: 学习了!

Shendu.CC | 园豆:2138 (老鸟四级) | 2018-03-23 14:58
其他回答(2)
0

官方文档里面有案例,可以参考一下。

收获园豆:10
蝌蝌 | 园豆:158 (初学一级) | 2018-03-23 12:18
0

去官方文档里查看案例参考一下

收获园豆:10
Shendu.CC | 园豆:2138 (老鸟四级) | 2018-03-23 12:19
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册