我一直在玩球拍和架子我正在将我的小静态站点生成器移植到Racket和编写单元测试的过程中,遇到了这个奇怪的问题。

#lang racket
(require (planet esilkensen/yaml:2:1))
(require rackunit)

(define some-yaml
  (string->yaml " - name : ding"))

(check-equal? some-yaml '(#hash(("name" . "ding"))) )

有人能给我解释一下为什么测试失败,输出如下:
Welcome to DrRacket, version 5.3.3 [3m].
Language: racket; memory limit: 128 MB.
--------------------
FAILURE
name:       check-equal?
location:   (#<path:/home/ding/Documents/racket/blog-generator> 7 0 119 45)
expression: (check-equal? x '(#hash(("name" . "ding"))))
actual:     (#hash(("name" . "ding")))
expected:   (#hash(("name" . "ding")))

最佳答案

这与可变哈希和不可变哈希有关以下测试将通过:

(check-equal? some-yaml (list (make-hash '(("name" . "ding")))))

其中make-hash是可变哈希构造函数。
正如Eli所提到的,可变和不可变散列以相同的方式打印是令人困惑的,所以我报告了一个bug。

10-01 06:20