我正在玩 luminus 留言簿应用程序。我添加了一些日志语句g.test.db.core.clj
来查看数据结构的键。查看下面的“预期键”和“实际键”。
(deftest test-messages
(jdbc/with-db-transaction [t-conn db/conn]
(jdbc/db-set-rollback-only! t-conn)
(let [timestamp (java.util.Date.)]
(is (= 1 (db/save-message!
{:name "Bobby"
:message "Hello World!"
:timestamp timestamp}
{:connection t-conn})))
(let [actual (-> (db/get-messages {} {:connection t-conn}))
expected {:name "Bobby"
:message "Hello World!"
:timestamp timestamp}]
(log/info "Expected Keys")
(pprint (keys expected))
(log/info "Actual Keys")
(pprint (keys actual)) ;;<--this is the problem
(is (= actual
expected))))))
“预期键”打印正常,但“实际键”出现运行时异常:
[2017-03-04 14:31:28,076]预期密钥(:名称:消息:时间戳)
[2017-03-04 14:31:28,089]实际密钥
lein 测试:仅 guestbook.test.db.core/test-messages
(测试消息)中的错误 (:) 未捕获的异常,不在断言中。预期:nil 实际:java.lang.ClassCastException: null at [empty stack trace]
lein 测试 guestbook.test.handler
但是,如果我这样做:
(pprint actual)
我得到我想要的:
({:id 35,
:name "Bobby",
:message "Hello World!",
:timestamp #inst "2017-03-04T04:31:01.030000000-00:00"})
到底是怎么回事?为什么我不能打印从数据库返回的数据结构中的键?