"不是nREPL dict"使用苹果酒自动测试模式

时间:2017-01-05 22:11:53

标签: emacs clojure cider

我正在尝试使用CIDER' cider-auto-test-mode在Emacs / CIDER中运行我的命名空间测试。但是,每当我加载命名空间时,都会收到错误Not an nREPL dict。有关如何解决此问题或进一步调试它的任何建议?

在描述我到目前为止所发现的内容之前:我使用的是CIDER 0.12.0,cider-nrepl版本0.10.0和nREPL 0.2.12。我知道CIDER / cider-nrepl版本的差异并不好;它不是选择,但如果是造成这个问题的原因,我可以解决它。

在CIDER Github issuea follow-up humane-test-output issue上讨论了同样的错误消息。我在使用的构建过程中找不到任何可能暗示humane-test-output的内容。

第一次加载文件(C-c C-k)时,测试运行,我得到以下堆栈跟踪:

error("Not an nREPL dict")
nrepl-dict-map( #[...]  ((dict "context" "my `testing` comment" ...)))
nrepl-dict-map( #[...] (dict "my-deftest-name" ((dict "context" "my `testing` comment" ...))))
cider-test-highlight-problems((dict "my-deftest-name" ((dict "context" "my `testing` comment" ...))))
nrepl--dispatch-response(...)

在我已加载文件后toggle-debug-on-error,测试不再运行,我得到了这个堆栈跟踪:

error("Not an nREPL dict")
nrepl-dict-keys(((dict "context" "my `testing` comment" ...)))
nrepl-dict-map(#[...] (dict "my-deftest-name" ((dict "context" "my `testing` comment" ...))
cider-test-clear-highlights()
cider-test-execute(...)
cider-test-run-ns-tests(...)
cider--test-silently()

堆栈跟踪略有不同但问题相同:dict列表is not a valid nREPL dict列表。虽然cider-test-highlight-problems明确期望并且在dict外部列表中获得a namespace and vars,但不会收到dict列表dict列表as apparently expected,而是收到一个简单的dict列表列表,如我的堆栈跟踪所示。

有关我如何进一步研究或解决此问题的任何建议?

1 个答案:

答案 0 :(得分:1)

首先要检查的是CIDER与cider-nrepl版本的区别。

过去,您必须将cider-nrepl放入〜/ .lein / profile.clj的依赖项部分,然后摆弄版本,直到错误消失为止。

您不再需要这样做,并且会导致许多类似症状的问题。这些天 cider提供了自己的依赖,当您运行cider-jack-in时,最常见的解决方案是从您的lein个人资料中移除苹果并让它选择自动正确的cider-nrepl版本。

这可能不是问题所在,但至少对于任何出现并且稍后发现类似症状的人来说,这是一件好事。