gpt4 book ai didi

c# - 如何在流畅的断言中比较 null 和 string.Empty (或 "")?

转载 作者:行者123 更新时间:2023-11-30 14:10:26 24 4
gpt4 key购买 nike

我有两个相同类型的对象,该类型有一个字符串字段,在第一个对象中值为空,在第二个对象中值为“”,我如何强制流利的 assertions 假设这是正确的?

Assertion 本身:

callResult.ShouldBeEquivalentTo(centreResponse, 
opt => opt.Excluding(r => r.DateOpen));

这里抛出异常,声明期望值为空,真实值是“”(反之亦然)

最佳答案

你可以做的是像这样覆盖 string 类型的属性的行为:

callResult.ShouldBeEquivalentTo(centreResponse, opt => opt
.Excluding(r => r.DateOpen)
.Using<string>(ctx => CompareStrings(ctx)).WhenTypeIs<string>());

public void CompareStrings(IAssertionContext<string> ctx)
{
var equal = (ctx.Subject ?? string.Empty).Equals(ctx.Expectation ?? string.Empty);

Execute.Assertion
.BecauseOf(ctx.Because, ctx.BecauseArgs)
.ForCondition(equal)
.FailWith("Expected {context:string} to be {0}{reason}, but found {1}", ctx.Subject, ctx.Expectation);
}

您可以通过将 CompareStrings 方法封装在 IAsertionRule 的实现中来稍微清理一下。请参阅 FluentAssertions 单元测试中的 RelaxingDateTimeAssertionRule here .

您可以将该自定义断言规则添加为您的 callResult 变量类型的所有断言的默认规则,但我仍然必须添加一些内容以允许全局默认值。

关于c# - 如何在流畅的断言中比较 null 和 string.Empty (或 "")?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24033905/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com