2017-04-21 87 views
1

如何模拟我的postgres数据库进行测试?Clojure测试中的数据库嘲讽

我的应用程序非常简单,但我找不到一个好方法来模拟我的数据库进行测试。在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)})) 

有一个很好的方法来模拟?

+0

您是否尝试过使用HSQLDB? – munk

+0

我没有找到任何人使用HSQLDB的参考。你有一个例子吗? – Victor

+0

http://stackoverflow.com/questions/10238399/clojure-jdbc-create-table-statement-does-not-run-unless-using-leiningen-repl – munk

回答

0

HSQLDB与clojure.java.jdbc一起使用。

The readme那里提到Korma是一个与clojure.java.jdbc兼容的库。

我看不出有什么理由不能像Java那样继续使用HSQLDB。

+0

有没有例子说明如何配置测试呢? – Victor

+0

快速搜索后我没有看到示例。你能提供一个你想要测试在你的问题中看起来像什么样子的例子吗? – munk

+0

我遵循这个架构https://kendru.github.io/restful-clojure/2014/02/16/writing-a-restful-web-service-in-clojure-part-1-setup/。但我不想使用流浪汉,只是码头开发人员和内存分贝进行测试。 – Victor