微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在 clojure 中测试用实习生创建的函数?

如何解决如何在 clojure 中测试用实习生创建的函数?

我使用“intern”函数生成运行时函数,但我无法测试生成函数

在 core.clj 中,我定义了生成这样的运行时函数函数

(ns cftf.core)

(defn- generation-function [function-name ratio]
  (let [function-symbol        (symbol function-name)]
    (intern 'cftf.core function-symbol (fn [input] (cftf.core/convert ratio input)))))

...

(defn generate-function-by-units [units]
  (->> units
       (units->function-name-and-ratio)
       (map #(generation-function (first %) (second %)))))

我编写了以下测试代码

(ns cftf.core-test
  (:require [clojure.test :refer :all]
            [cftf.core :as c]))


(defn amount-of-alcohol-per-one-bottle [bottle-size abv]
  (* bottle-size (/ abv 100)))

(def alcohol-units
  {:soju (amount-of-alcohol-per-one-bottle 360 16.5)
   :beer (amount-of-alcohol-per-one-bottle 500 5)
   :whisky (amount-of-alcohol-per-one-bottle 700 40)
   })

(c/generate-function-by-units alcohol-units)

(deftest a-test
  (testing "soju->beer test"
    (is (= (int (c/soju->beer 1)) 2))))

在repl中调用“generate-function-by-units”后,就可以使用“soju->beer”函数了。

但在测试中我得到错误“No such var: c/soju->beer”。

我已尝试使用夹具或在 test.clj 的顶部调用生成函数按单元”,但仍然出现错误

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。