【问题标题】:Moq verify with ItAny not matching as expected使用 ItAny 验证的起订量与预期不匹配
【发布时间】:2021-03-19 00:35:56
【问题描述】:

我遇到了这个错误

[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&lt;IDbConnection&gt;() 但我不确定,

我的验证

            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);

其中connNpgsqlConnection

我对 Moq(以及一般的 C#)非常陌生,并且阅读了文档 https://github.com/Moq/moq4/wiki/Quickstart,但无法弄清楚我应该如何解决这个错误。我错过了什么?

【问题讨论】:

    标签: c# moq


    【解决方案1】:

    示例中的验证使用ContactScore 的特定实例(引用),而不是调用期间使用的实例(引用)。

    It.Is&lt;&gt;() 与谓词一起使用以匹配所需的参数属性值。

    scoreRepo.Verify(s => s.Create(It.Is<ContactScore>(s => s.CampaignId == 1 &&
            TokenId == 1 &&
            ContactId == 1 &&
            Score == 1 &&
            DebtorId == 1
         ), 
        It.IsAny<IDbConnection>()));   
    

    参考Matching Arguments

    【讨论】:

      猜你喜欢
      • 2021-12-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-30
      • 1970-01-01
      • 2018-01-05
      • 2018-08-21
      • 1970-01-01
      相关资源
      最近更新 更多