:ここカスタムclojure.specジェネレータを作成するにはどうすればよいですか?私は接続と呼ばれる次のようなデータ構造を仕様にしようとしている
{:id "some string" :channel "instance of org.httpkit.server.AsyncChannel" }
は私のスペックです:
(defn make-channel []
(proxy [AsyncChannel] [nil nil]
(toString [] "mock AsyncChannel")))
(defn channel-gen
[]
(->> (s/gen (s/int-in 0 1))
(gen/fmap (fn [_] (make-channel)))))
(s/def ::channel (s/spec (::channel-type)
:gen channel-gen))
(s/def ::id string?)
(s/def ::connection (s/keys :req-un [::channel ::id]))
(s/fdef make-connection
:args ::channel
:ret ::connection)
私は次のエラーを取得していると私が何であるか見当もつかないここで間違っている:
clojure.lang.ExceptionInfo: Unable to construct gen at: [] for: [email protected]
clojure.lang.Compiler$CompilerException: clojure.lang.ExceptionInfo: Unable to construct gen at: [] for: [email protected] #:clojure.spec.alpha{:path [], :form #object[gameserve.ws$make_connection 0x788ffa19 "[email protected]"], :failure :no-gen}
ありがとうございます。確かにこのコードは動作していますが、私は自分のコードでREPLのためにいくつかのゴミを捨てていることに気づきました。私は本当にREPLのもののために(コメント...)を使用する習慣に入る必要があります。手伝ってくれてありがとう。 –
clojure.specを使用している現実のプロジェクトをお勧めできますか?私はClojureには新しく、実際にこのことを学ぶのに役立ちます。 –
ライブラリに関する限り、[clojure.java.jdbc](https://github.com/clojure/java.jdbc/blob/master/src/main/clojure/clojure/java/jdbc/spec.clj)があります。 。私は実際に完全に焼いたアプリケーションについては分かりませんが、他の人が共有したい例があるかもしれません。 – madstap