区块链技术博客
www.b2bchain.cn

如何使用Fluent Assertion比较两个随属性而变化的集合? – c#程序员分享

本文介绍了如何使用Fluent Assertion比较两个随属性而变化的集合? – c#程序员分享,有助于帮助完成毕业设计以及求职,是一篇很好的资料。

对技术面试,学习经验等有一些体会,在此分享。

我有从内部类RuleInfo创建的公共类Rule

private static RuleInfo CreateRuleInfo(Rule r) {     return new RuleInfo     {         RuleCode = r.RuleId,         DisplayName = r.RuleCode,         Description = r.Description,         LegacyRuleCode = null     }; } 

它们的属性名称有所不同,因此ShouldBeEquivalentTo()ShouldAllBeEquivalentTo()不起作用。

现在,我正在手动/明确地比较它们:

foreach (var x in Enumerable.Zip(infs, rules, (i, r) => new { Info = i, Rule = r })) {     x.Info.ShouldBeEquivalentTo(         new         {             RuleCode = x.Rule.RuleId,             DisplayName = x.Rule.RuleCode,             Description = x.Rule.Description,             LegacyRuleCode = (string)null         }); } 

有没有更好,更紧凑,不太明确,更易读的方法?

参考方案

不幸的是,在比较不同类型时,当前没有一种方法可以指定属性之间的映射。关于它有一个开放的issue。

这是另一个比较两个集合的方法的示例。
请注意,我假设==执行值相等。
因此,如果您的所有属性均为intstring,则可以安全使用。

ruleInfos.Should().Equal(rules, (ruleInfo, rule) =>     ruleInfo.RuleCode == rule.RuleId      && ruleInfo.DisplayName == rule.RuleCode     && ruleInfo.Description == rule.Description ); 

例如没有==重载的引用类型,您将需要使用以下方式优雅地处理null值:

(PropertyA == PropertyB) || (PropertyA?.Equals(PropertyB) == true 

我不确定FluentAssertions的旧版本是否具有此功能,但我想将一个集合与另一个集合进行比较。我有一个像这样的dto:public class UserDTO { public int Id { get; set; } public string Username { get; set; } } 我想比较两个清单。 List<UserDTO&g…

我已经用Java编写了REST端点。应用程序中有c#代码使用RestClient调用这些端点。我正在考虑为这些编写单元测试。只是想知道什么是最好的方法? Moq框架或NUNIT还是其他?有任何想法吗?谢谢。 参考方案 如果要在Java中测试REST端点,则可以使用Mockito(https://site.mockito.org/)之类的模拟框架来模拟所需的任…

这是scanario:我正在研究一个DAO对象,该对象使用休眠条件API来形成许多复杂的查询,以对数据库执行某些任务(例如,跨多个字段的关键字搜索)。我们需要对此进行单元测试,以确保所生成的查询在各种情况下都是正确的。测试它的一种方法(可能是更好的方法)是通过在最后检查休眠条件并模拟数据库交互来正确创建休眠条件。但是,这是不理想的,因为它首先是一种作弊行为(…

我是从事PHP项目的长期Java程序员,并且试图使PHPUnit正常工作。使用Java进行单元测试时,通常将测试用例类和常规类放在单独的目录中,如下所示-/src MyClass.java /test MyClassTest.java 等等。使用PHPUnit进行单元测试时,遵循相同的目录结构是常见的做法,还是有更好的方法来布置测试类?到目前为止,我可以使“…

我有静态课。我正在为使用Junit和Mockito的静态方法之一编写JUnit。在该方法中,将调用其他类级别的静态变量的函数。我想模拟这个函数调用。我的代码如下,class ABC { public static SomeVariable var; public static Value getSomething() { try { Value val = …

赞(0) 打赏
部分文章转自网络,侵权联系删除b2bchain区块链学习技术社区 » 如何使用Fluent Assertion比较两个随属性而变化的集合? – c#程序员分享
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

b2b链

联系我们联系我们