【问题标题】:How to run tests defined in attr map of defn in cider?如何运行在苹果酒中定义的 attr 映射中定义的测试?
【发布时间】:2018-09-29 14:42:50
【问题描述】:

在 Spacemacs 中使用 Cider,我似乎无法找到一种方法来运行在 defn 的属性映射中定义的测试。以这个函数定义为例:

(defn contains-duplicates-a?
  "checks if a vector of strings contain duplicates"
  {:test #(do
            (is (contains-duplicates-a? ["aa" "aa"]))
            (is (not (contains-duplicates-a? ["aa" "aaa"])))
            (is (not(contains-duplicates-a? ["ba" "ab"])))
            (is (not (contains-duplicates-a? ["abcde" "xyz" "ecdab"]))))}
  [word-vector]
  (not(=
        (count word-vector)
        (count (distinct word-vector)))))

这种编写单元测试的方式在我的公司相当普遍,并且得到我们最常见的 IDE 设置(IntelliJ + Cursive)的支持。我们喜欢让单元测试接近代码。

我不确定是否可以通过使用cider-test-defining-forms 来实现,因为无论您添加什么,都必须有一个“顶级表单”(doc)。

是我遗漏了什么,还是根本不支持?

【问题讨论】:

    标签: emacs clojure tdd cider


    【解决方案1】:

    如果您想在这样的定义上调用cider-test-run-test,只需将defn 添加到cider-test-defining-forms

    您还可以通过运行带有前缀参数的cider-test-run-ns-tests 在CIDER 中运行在当前命名空间中定义的所有测试(包括您在此处所做的测试)。在当前稳定的 CIDER 中,这意味着您可以输入 C-u C-c C-t nC-u C-c , n。前缀参数 (C-u) 是防止 CIDER 尝试在典型的“${current.namespace}-test”命名空间中查找测试所必需的。

    【讨论】:

    • 啊,我明白了,谢谢!我玩了一下它,它的工作方式与你在 spacemacs 中的 emacs 输入模式中所说的完全一样。在 vim 输入模式下,似乎在运行cider-test-run-ns-tests(使用 SPC - m,t,n)之前添加 SPC - u(通用参数)的工作方式不同,但我猜这是一个 spacemacs 问题。我发现最好的方法是执行 SPC - u, SPC SPC,然后输入 cider-test-run-ns-tests。下次我输入 SPC - U, SPC SPC 时,它会被建议,我可以直接回车。作为记录,cider-test-defining-forms 在 ~/.emacs.d/elpa/cider-20180917.1746/cider-test.el 下
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多