gpt4 book ai didi

c# - 流利的断言 : Assert one OR another value

转载 作者:可可西里 更新时间:2023-11-01 08:37:40 26 4
gpt4 key购买 nike

使用流畅的断言,我想断言给定的字符串包含两个字符串之一:

actual.Should().Contain("oneWay").Or().Should().Contain("anotherWay"); 
// eiter value should pass the assertion.
// for example: "you may do it oneWay." should pass, but
// "you may do it thisWay." should not pass

只有当两个值都不包含时,断言才会失败。这不起作用(甚至无法编译),因为没有 Or() 运算符。

我现在是这样做的:

bool isVariant1 = actual.Contains(@"oneWay");
bool isVariant2 = actual.Contains(@"anotherWay");
bool anyVariant = (isVariant1 || isVariant2);
anyVariant.Should().BeTrue("because blahblah. Actual content was: " + actual);

这很冗长,必须手动创建“因为”参数才能获得有意义的输出。

有没有办法以更具可读性的方式做到这一点?解决方案也应该适用于其他流畅的断言类型,如 Be()HaveCount () 等...

如果重要的话,我在 .NET 3.5 上使用 FluentAssertions 版本 2.2.0.0。

最佳答案

我会让它成为字符串断言的扩展。像这样:

public static void BeAnyOf(this StringAssertions assertions, string[] expectations, string because, params string[] args) {
Execute.Assertion
.ForCondition(expectations.Any(assertions.Subject.Contains))
.BecauseOf(because, args)
.FailWith("Expected {context:string} to be any of {0}{reason}", expectations);
}

你甚至可以 fork repository并给我一个 Pull Request使其成为下一个版本的一部分。

关于c# - 流利的断言 : Assert one OR another value,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25542172/

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