2016-10-29 4 views
0

Ich begann clojure arbeitet eine Woche zurück, und ich bin nicht in der Lage, einen Testfall für den Code unten für Destrukturierung von Karten Werte mit dem Standard zu schreiben:Testfall für Destrukturierung in clojure für Datenbank-Konnektivität

(defn connect-db [{:keys [host port db-name username password] 
        :or {host  "localhost" 
          port  12345 
          db-name "my-db" 
          username "db-user" 
          password "secret"} 
        :as cfg}] 
    (if (= " " host) 
    "Error: host name not available" 
    (try 
     (println "connecting to:" host "port:" port "db-name:" db-name 
       "username:" username "password:" password) 
     (catch Exception e(str "caught exception:" (.getMessage e)))))) 

Die Testfall sollte mit deftest geschrieben werden.

Antwort

0

Ich bin mir nicht sicher, ob es ist viel von der Prüfung Destrukturierung zu gewinnen, weil es ein zentraler Bestandteil der Sprache ist und gebaut in fn, defn, let usw. Es sei angenommen, dass es funktioniert und Test nur Ihren eigenen Code. Wenn Sie Vertrauen aufbauen wollen, dass es so funktioniert, wie Sie es erwarten, spielen Sie damit in der REPL. Es gibt viele Beispiele here.

Wir können einige Standardwerte wie dies ausprobieren:

(let [{:keys [a b] 
     :or {a "a" b "b"}} 
     nil] 
[a b]) 

=> ["a" "b"] 
+0

Ja, es nicht viel ist, aber ich habe diesen Code, indem Sie die obige Probe gelöst. – Ammy

0
(deftest con-db 
(is (= true (map? db))) 
(is (= true (function? connectdb))) 
(connectdb ["01" "20" "02" "03" "04"] {:host "localhost" :port 8888 :db-name "dbname" :username "name" :password "admin"}) 
(is(.equals "connecting: remote port: 8888 db-name: dbname username: name password: admin" outputdb)) 
(is(not(.equals "string" outputdb))) 
(is(.equals "01-20" output)) 
    (is(= 400 (- y x)))))