使用包含字符串的参数进行断言
Assert with the parameter that contains string
我正在使用 MSTest
和 Moq
编写单元测试。我想测试是否使用包含子字符串的字符串参数调用了一个方法。
_mockMessageService.Verify(x => x.ShowMessage(It.IsAny<string>()), Times.Once());
在上面的代码中,我可以验证 ShowMessage
方法使用一些字符串参数调用了一次,但我想确保该字符串包含 success
、fail
、partially success
等。我不能直接传整个字符串,因为它不一致,只有一部分是一致的。可能吗?
It.Is<>()
允许使用谓词来验证参数
_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());
我正在使用 MSTest
和 Moq
编写单元测试。我想测试是否使用包含子字符串的字符串参数调用了一个方法。
_mockMessageService.Verify(x => x.ShowMessage(It.IsAny<string>()), Times.Once());
在上面的代码中,我可以验证 ShowMessage
方法使用一些字符串参数调用了一次,但我想确保该字符串包含 success
、fail
、partially success
等。我不能直接传整个字符串,因为它不一致,只有一部分是一致的。可能吗?
It.Is<>()
允许使用谓词来验证参数
_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());