This page is not created by, affiliated with, or supported by Slack Technologies, Inc.
Jeg oppdaget at man kan bruke clojure.spec
og clojure.test
for å generere "tulledata" når man jobber med front-end:
(ns kubernetes
(:require [clojure.spec.alpha :as spec]
[clojure.test.check.generators :as gen]))
(spec/def ::name string?)
(spec/def ::status #{:running :stopped})
(spec/def ::version string?)
(spec/def ::uptime string?)
(defn get-mock-data []
{:name (gen/sample (spec/gen ::name) 1)
:status (gen/sample (spec/gen ::status) 1)
:version (gen/sample (spec/gen ::version) 1)
:uptime (gen/sample (spec/gen ::uptime) 1)})
(get-mock-data) ;; => {:name (""), :status (:stopped), :version (""), :uptime ("")}
Før jeg legger masse tid i å integrere med Kubernetes.Nice! Minner meg om denne snutten som @U04V5VAUN har delt tidligere: https://github.com/clojure/data.json/blob/master/src/test/clojure/clojure/data/json_gen_test.clj Genererer data på samme måte, og bruker generert data til å teste systemet.
👀 1
Nice! Det var nok clojure.spec.gen.alpha
jeg burde brukt, ja, og ikke clojure.test.check.generators
😅
Du kunne jo laget en spec for data’ene dine også:
ardoq.specs> (s/def ::data (s/keys :req-un [::name ::status ::version ::uptime]))
;; => :ardoq.specs/data
ardoq.specs> (gen/sample (s/gen ::data))
;; => ({:name "", :status :running, :version "", :uptime ""}
{:name "P", :status :stopped, :version "", :uptime ""}
{:name "", :status :stopped, :version "A", :uptime ""}
{:name "P5", :status :running, :version "AVm", :uptime "57"}
{:name "15", :status :running, :version "k9K", :uptime "3"}
{:name "lgwr7", :status :running, :version "Vr7", :uptime "l0"}
{:name "W", :status :running, :version "", :uptime "it6"}
{:name "tI751", :status :stopped, :version "LAZU", :uptime ""}
{:name "Huw", :status :stopped, :version "O", :uptime "oQIN"}
{:name "cpIA68", :status :running, :version "CaF91", :uptime "5"})
ardoq.specs>
😮 1
ardoq.specs> (s/def ::uptime nat-int?)
;; => :ardoq.specs/uptime
ardoq.specs> (gen/sample (s/gen ::data))
;; => ({:name "", :status :running, :version "", :uptime 1}
{:name "8", :status :running, :version "a", :uptime 0}
{:name "", :status :stopped, :version "h", :uptime 1}
{:name "17", :status :stopped, :version "", :uptime 0}
{:name "L", :status :stopped, :version "Sl4", :uptime 1}
{:name "pabA", :status :stopped, :version "", :uptime 2}
{:name "5n6j", :status :running, :version "n3", :uptime 6}
{:name "6j", :status :stopped, :version "BR", :uptime 20}
{:name "", :status :running, :version "HVO18", :uptime 7}
{:name "", :status :running, :version "", :uptime 1})
ardoq.specs>