Не удается получить ключи из хэш-карты в приложении гостевой книги

Я играю с гостевой книгой 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)

Другие вопросы по тегам