我正在尝试使用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 issue和a 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
列表列表,如我的堆栈跟踪所示。
有关我如何进一步研究或解决此问题的任何建议?
答案 0 :(得分:1)
首先要检查的是CIDER与cider-nrepl版本的区别。
过去,您必须将cider-nrepl放入〜/ .lein / profile.clj的依赖项部分,然后摆弄版本,直到错误消失为止。
您不再需要这样做,并且会导致许多类似症状的问题。这些天 cider提供了自己的依赖,当您运行cider-jack-in
时,最常见的解决方案是从您的lein个人资料中移除苹果并让它选择自动正确的cider-nrepl版本。
这可能不是问题所在,但至少对于任何出现并且稍后发现类似症状的人来说,这是一件好事。