避免 Scala XML 的 b {"c"} != b c测试中的行为
我正在使用 scalatest,特别想说
actualXML should be === expectedXML
的是 === 不关心属性顺序。然而,当使用 Scala XML 的 { ... } 语法嵌入文本时,断言会失败,因为
scala> <a>b {"c"}</a>.child
res8: scala.xml.Node* = ArrayBuffer(b , c)
:
scala> <a>b c</a>.child
res9: scala.xml.Node* = ArrayBuffer(b c)
我可以编写一个
import scala.xml.Elem
import scala.xml.XML
def launder(xml: Elem): Elem = XML.loadString(xml.toString)
给出的
launder(actualXML) should be === expectedXML
方法,但希望能够使用普通语法。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您可以专门为 Xml Elem 引入自己的 Equalizer 类:
因此,您将引入另一个隐式转换,但这次专门针对
Elem
,它比较经过清洗的 Elem。You can introduce your own Equalizer class specifically for Xml Elem:
So you're introducing another implicit conversion but this time specifically for
Elem
, which compares the laundered Elems.请参阅上面的答案 - 我现在更好地了解该地区。下面是修正了括号的代码以及基于 Matthew 和 Dave 评论的测试。
我对它的尺寸表示歉意:
See answer above - I now understand the area better. Here's the code with brackets corrected and a test that builds on Matthew and Dave's comments.
My apologies for it's size: