c# - 使用 ItAny 验证的起订量与预期不匹配
问题描述
我正面临这个错误
[xUnit.net 00:00:03.08] Moq.MockException :
[xUnit.net 00:00:03.08] Expected invocation on the mock at least once, but was never performed: s => s.Create(ContactScore, It.IsAny<IDbConnection>())
[xUnit.net 00:00:03.08]
[xUnit.net 00:00:03.08] Performed invocations:
[xUnit.net 00:00:03.08]
[xUnit.net 00:00:03.08] Mock<ContactScoreRepo:1> (s):
[xUnit.net 00:00:03.08]
[xUnit.net 00:00:03.08] ContactScoreRepo.Create(ContactScore, NpgsqlConnection)
[xUnit.net 00:00:03.08]
我想我的问题是NpgsqlConnection
不匹配It.IsAny<IDbConnection>()
,但我不确定,
我的验证
var scoreCreated = new ContactScore
{
CampaignId = 1,
TokenId = 1,
ContactId = 1,
Score = 1,
DebtorId = 1,
};
scoreRepo.Verify(s => s.Create(scoreCreated, It.IsAny<IDbConnection>()));
以及调用该方法的实际代码
await ScoreRepo.Create(new ContactScore
{
CampaignId = (int)campaign.Id,
TokenId = token.Id,
ContactId = (int)contact.Id,
Score = req.Score,
DebtorId = req.DebtorId,
}, conn);
conn
在哪里NpgsqlConnection
我对 Moq(以及一般的 C#)非常陌生,并且阅读了文档https://github.com/Moq/moq4/wiki/Quickstart,但无法弄清楚我应该如何解决这个错误。我错过了什么?
解决方案
示例中的验证是使用 a 的特定实例(引用)ContactScore
,而不是调用期间使用的实例(引用)。
与谓词一起使用It.Is<>()
以匹配参数的所需属性值。
scoreRepo.Verify(s => s.Create(It.Is<ContactScore>(s => s.CampaignId == 1 &&
TokenId == 1 &&
ContactId == 1 &&
Score == 1 &&
DebtorId == 1
),
It.IsAny<IDbConnection>()));
参考匹配参数
推荐阅读
- python - python turtle register_shape问题python 3.9
- shell - 如何在 Kubernetes Pod 中执行 mq 脚本文件?
- python - 如何在对象中找到平均日期时间?
- pandas - 熊猫中每个组的列中的第二个最大值
- python - Edmonds–Karp 时间复杂度
- amazon-web-services - 通过系统管理器自动化文档从启动模板获取图像 ID
- javascript - 使用ajax将值从MVC中的视图传递给控制器
- java - PostgreSQL、Atomikos 和 PREPARE 事务
- php - 插入“IF”值为空?
- python - 找不到模板 pyinstaller BOTTLE