2016-08-16 520 views
1

我刚刚更新了我的旧项目以使用版本4.13.0,并且有很多异常验证与ComparisonMode.Substring,但ComparisonMode.Substring不存在于最新版本中。我发现this解释说:FluentAssertions在比较异常消息时失败

由于这样的结果,我决定,为2.1版,ComparisonMode是过时的,对异常信息的任何断言被视为不区分大小写的通配符匹配。

但现在我得到失败的测试负荷:

预期异常消息相当于匹配“ 参数的值‘PeriodEnd’必须大于01 .01.0001' ”,但“参数PeriodEnd的值 必须大于'01 .01.0001'。

字符串我断言与

价值论证的 'PeriodEnd' 必须大于01 .01.0001'

,预计说法

值的信号'期末'必须大于'01 .01.0001'。值为'01 .01.0001'。

参数名:PeriodEnd

但是从它似乎在此之前,它应该是一个通配符,我从断言字符串是一个的子果然是“打补丁笔记”,那么为什么它失败了吗?

回答

2

您仍然需要将通配符添加到WithMessage的调用中,就像您在ComparisonMode.Wildcard仍然存在时一样。理由解释如下:this post

如果您需要验证某个字符串值或异常消息是否符合预期,请不要验证确切的消息。使用通配符验证相关的特定部分,以验证行为是否符合预期。如果您决定改进所涉及的文本,它将会从无法完成的测试中节省。

+0

有没有关于不同通配符的信息? – Mech0z

+0

查看https://github.com/dennisdoomen/FluentAssertions/wiki#exceptions。但总之,只支持'?'和'*'。 –