【问题标题】:Assert with the parameter that contains string使用包含字符串的参数进行断言
【发布时间】:2021-01-13 14:35:38
【问题描述】:

我正在使用MSTestMoq 编写单元测试。我想测试一个方法是用包含子字符串的字符串参数调用的。

_mockMessageService.Verify(x => x.ShowMessage(It.IsAny<string>()), Times.Once());

在上面的代码中,我可以验证 ShowMessage 方法被调用了一次并带有一些字符串参数,但我想确保该字符串包含诸如 successfailpartially success 等单词。我不能直接传递整个字符串,因为它不一致,只有一部分是一致的。有可能吗?

【问题讨论】:

  • 如果你在做单元测试,为什么字符串消息not一致?为什么您不能控制输入和模拟依赖项,以便您可以期待特定的消息?

标签: c# unit-testing moq mstest


【解决方案1】:

It.Is&lt;&gt;() 允许使用谓词来验证参数

_mockMessageService.Verify(x => x.ShowMessage(It.Is<string>(s => 
    s.Containes("success", StringComparison.InvariantCultureIgnoreCase) || 
    s.Containes("fail", StringComparison.InvariantCultureIgnoreCase) ||
    s.Containes("partially success", StringComparison.InvariantCultureIgnoreCase)
)), Times.Once());

参考:MOQ Quickstart - Matching Arguments

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-03-15
    • 1970-01-01
    • 1970-01-01
    • 2022-07-03
    • 1970-01-01
    • 2022-01-13
    • 2013-07-10
    • 2021-04-28
    相关资源
    最近更新 更多