【问题标题】:What do round brackets mean in the output of clojure.test failures?clojure.test 失败的输出中的圆括号是什么意思?
【发布时间】:2021-07-02 06:26:37
【问题描述】:

我的一项测试中有以下输出:

Assertion failed:
Expected :[[] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] ["seq07"] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] []]
Actual   :[() () () () () () () () () () () () () () () () () () () () () () () () () () ("seq07") () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () ()]

()("seq07") 在此输出中的含义是什么?

【问题讨论】:

  • clojure.org 提供了一个页面,该页面解释并命名了每个连线。所以用谷歌搜索它应该更容易。 clojure.org/guides/weird_characters
  • @souenzzo 谢谢!

标签: unit-testing clojure clojure.test


【解决方案1】:

如另一个答案所述,() 是一个空列表,[] 是一个空向量。

但请注意,= 比较列表和向量的内容,它忽略了容器的类型:

(= '("seq07") ["seq07"])           ;; => true
(= '(()) [[]])                     ;; => true

问题中的断言失败是由于actual 向量的元素少于expected 向量:

(= ['("seq07")] ['("seq07") '()])  ;; => false

【讨论】:

    【解决方案2】:

    () 是列表的表示法,而[] 是向量的表示法

    () 是一个空列表,("seq07") 是一个包含单个成员的列表 - 字符串 seq07

    您可以阅读有关 clojure 列表的更多信息here

    编辑:刚刚发现这个interesting SO question 关于列表与向量

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-03
      • 2012-03-30
      相关资源
      最近更新 更多