Postgresql Clojure测试中的数据库模拟

Postgresql Clojure测试中的数据库模拟,postgresql,testing,clojure,mocking,korma,Postgresql,Testing,Clojure,Mocking,Korma,如何模拟我的postgres数据库进行测试 我的应用程序非常简单,但我找不到一个好方法来模拟数据库进行测试。在Java中,我通常使用HSQLDB,但Clojure中有解决方案吗 这是我的项目文件 (defproject account-manager "0.1.0-SNAPSHOT" :description "Account Manager" :url "http://example.com/FIXME" :licen

如何模拟我的postgres数据库进行测试

我的应用程序非常简单,但我找不到一个好方法来模拟数据库进行测试。在Java中,我通常使用HSQLDB,但Clojure中有解决方案吗

这是我的项目文件

  (defproject account-manager "0.1.0-SNAPSHOT"
            :description "Account Manager"
            :url "http://example.com/FIXME"
            :license {:name "Eclipse Public License"
                      :url "http://www.eclipse.org/legal/epl-v10.html"}
            :dependencies [[org.clojure/clojure "1.8.0"]
                           [compojure "1.5.2"]
                           [cheshire "5.7.0"]
                           [ring/ring-core "1.5.1"]
                           [ring/ring-json "0.4.0"]
                           [ring/ring-jetty-adapter "1.5.1"]
                           [korma "0.4.3"]
                           [org.clojars.amit/postgresql "8.0.1"]
                           [com.h2database/h2 "1.4.188"]
                           [ragtime "0.7.1"]
                           [environ "1.1.0"]
                           [org.clojure/data.json "0.2.6"]
                           [buddy/buddy-hashers "1.2.0"]
                           [clj-time "0.13.0"]]
            :plugins [[lein-ring "0.11.0"]]

            :ring {:handler account-manager.handler/app
                   :nrepl {:start? true
                           :port 9998}}

            :profiles
            {:dev {:dependencies [[javax.servlet/servlet-api "2.5"]
                                  [ring-mock "0.1.5"]]
                   :env {:bank-db "bank_db"
                         :bank-db-user "bank_db"
                         :bank-db-pass "-"}}
             :test {:env {:bank-db "bank_db"
                          :bank-db-user "bank_db"
                          :bank-db-pass "-"}}})
这就是我配置数据库的方式。将来我将使用配置文件

(ns bank-account-manager.db
  (:use korma.db)
  (:require [environ.core :refer [env]]))

(defdb db (postgres {:db (get env :bank-db "bank_db")
                     :user (get env :bank-db-user "bank_db")
                     :password (get env :bank-db-pass "-")
                     :host (get env :bank-db-host "localhost")
                     :port (get env :bank-db-port 5432)}))

有一种很好的模拟方法?

HSQLDB可以与clojure.java.jdbc一起使用

有人提到Korma是一个与clojure.java.jdbc兼容的库


我看不出你为什么不能像在Java中那样继续使用HSQLDB。

你试过使用HSQLDB吗?我没有找到任何使用HSQLDB的人的参考资料。你有一个例子吗?我会考虑使用函数嘲讽的另一种方法。midge框架为此提供了许多功能:不要在产品和测试中使用不同的db。在Java中查找db集成测试是否有任何示例如何使用它配置测试?快速搜索后,我没有看到任何示例。你能提供一个你想让测试在你的问题中看起来像什么的例子吗?我遵循这个架构。但我不想使用vagrant,只想使用docker进行开发,使用内存中的db进行测试。