我正在玩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))))))
&#34;预期密钥&#34;打印正常,但我得到了#34;实际键&#34;
的运行时异常[2017-03-04 14:31:28,076]预期钥匙 (:name:message:timestamp)
[2017-03-04 14:31:28,089]实际密钥
lein test:仅限guestbook.test.db.core / test-messages
错误(测试消息)(:)未捕获异常,不在断言中。 expected:nil actual:java.lang.ClassCastException:null at [empty 堆栈跟踪]
lein test guestbook.test.handler
但是,如果我这样做:
(pprint actual)
我得到了我想要的东西:
({:id 35,
:name "Bobby",
:message "Hello World!",
:timestamp #inst "2017-03-04T04:31:01.030000000-00:00"})
发生了什么事?为什么我不能从数据库返回的数据结构中打印密钥?
答案 0 :(得分:0)
看起来实际是列表而不是地图。试试(-> actual first keys pprint)