2017-04-21 5 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/。しかし、私は、開発のためのドッカーとテストのためのメモリDBを使用することは望ましくありません。 – Victor

関連する問題