Не удается получить ключи из хэш-карты в приложении гостевой книги
Я играю с гостевой книгой 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] Ожидаемые ключи (: name: message: timestamp)
[2017-03-04 14: 31: 28,089] Фактические ключи
lein test: только guestbook.test.db.core/test-messages
ОШИБКА в (test-messages) (:) Не найденное исключение, а не в утверждении. Ожидаемый: ноль фактический: java.lang.ClassCastException: ноль в [пустой след стека]
lein test guestbook.test.handler
Однако, если я сделаю это: (pprint actual)
Я получаю то, что хочу:
({:id 35,
:name "Bobby",
:message "Hello World!",
:timestamp #inst "2017-03-04T04:31:01.030000000-00:00"})
Что здесь происходит? Почему я не могу распечатать ключи из структуры данных, возвращенной из базы данных?
1 ответ
Похоже, фактическим является список, а не карта. Пытаться (-> actual first keys pprint)