【发布时间】:2015-11-04 09:51:47
【问题描述】:
我正在努力使我的测试尽可能地具有可读性和可维护性,并且我希望将这种形式的参数对象验证传递给我提供给 SUT 的模拟。
_emailHelperMock.Verify(eh => eh.OnMailCreated(
It.Is<MailMessage>(WithBodyContaining(enrolment) && SentTo(Test.CustomerAddress))));
但由于出现编译错误,我还没有找到解决方案:
Error CS0019 Operator '&&' cannot be applied to operands of type 'Expression<Func<MailMessage, bool>>' and 'Expression<Func<MailMessage, bool>>'
我上面使用的语法糖方法是通过以下方式定义的:
private static Expression<Func<MailMessage, bool>> WithBodyContaining(Enrolment enrolment)
{
return mail => mail.Body.Contains(enrolment.Title) && mail.Body.Contains(enrolment.Date);
}
private static Expression<Func<MailMessage, bool>> SentTo(string address)
{
return mail => mail.To.ToString().Contains(address);
}
我可以制作一个方法,例如WithBodyContainingEnrolmentAndSentToAddress(enrolment, address),但我宁愿使用上面提到的带有多个布尔检查的表单。
【问题讨论】:
标签: c# unit-testing tdd moq