Clojure 测试中的数据库模拟
Database mocking in Clojure tests
如何模拟我的 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)}))
有什么好的mock方法吗?
HSQLDB 使用 clojure.java.jdbc。
The readme 提到 Korma 是与 clojure.java.jdbc 兼容的库。
我看不出有任何理由让您不能像 Java 那样继续使用 HSQLDB。
如何模拟我的 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)}))
有什么好的mock方法吗?
HSQLDB 使用 clojure.java.jdbc。
The readme 提到 Korma 是与 clojure.java.jdbc 兼容的库。
我看不出有任何理由让您不能像 Java 那样继续使用 HSQLDB。