Ian*_*ink 2 c# unit-testing moq visual-studio
使用Microsoft Visual Studio 2017内置的Moq测试.
我有一个创建一些内容的简单类,然后将内容发送到通知系统.我需要测试是否调用了通知系统,但是调用包含了一些文本.
public void DoStuff()
var tenantSettings = _tenantService.GetTenantSettings();
tenantSettings.Body = "xxx SOME VALUE xxx";
MyService.SendMail(tenantSettings.Body);
Run Code Online (Sandbox Code Playgroud)
如何测试SendMail是否包含"SOME VALUE"文本?
我有一个MOCK设置:
MyServiceMock.Setup(x=>x.SendMail(It.IsAny<string>);
Run Code Online (Sandbox Code Playgroud)
小智 6
你可以简单地Verify在你的模拟上使用方法:
MyServiceMock.Verify(x => x.SendMail("SOME VALUE"), Times.Once());
Run Code Online (Sandbox Code Playgroud)
编辑:
如果你想验证作为参数传递的文本是否完全匹配,但只包含测试值,你可以使用,如Scott Chamberlain所写:
MyServiceMock.Verify(x => x.SendMail(It.Is<string>(s => s.Contains("SOME VALUE")), Times.Once());
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
499 次 |
| 最近记录: |