急于修复“警告:任何?已在命名空间:leiningen.midje 中引用:#'clojure.core/any?,被替换为:#'leiningen.midje/any?”

Chi*_*tos 2 clojure compojure leiningen midje

我尝试lein new compojure financeiro使用 midje 框架在 leiningen 的 compojure 模板 ( ) 中运行测试并收到警告:

lein midje
WARNING: any? already refers to: #'clojure.core/any? in namespace: leiningen.midje, being replaced by: #'leiningen.midje/any?
nil
All checks (3) succeeded.
Run Code Online (Sandbox Code Playgroud)

我的测试代码handler_test.clj

lein midje
WARNING: any? already refers to: #'clojure.core/any? in namespace: leiningen.midje, being replaced by: #'leiningen.midje/any?
nil
All checks (3) succeeded.
Run Code Online (Sandbox Code Playgroud)

我的项目文件project.clj

(ns financeiro.handler-test
  (:require
    ; [clojure.test :refer :all]
    [midje.sweet :refer :all]
    [ring.mock.request :as mock]
    [financeiro.handler :refer :all]))

; (deftest test-app
;   (testing "main route"
;     (let [response (app (mock/request :get "/"))]
;       (is (= (:status response) 200))
;       (is (= (:body response) "Hello World"))))

;   (testing "not-found route"
;     (let [response (app (mock/request :get "/invalid"))]
;       (is (= (:status response) 404)))))

(facts "'Hello World' main route"
  (fact "response status is 200"
    (let [response (app (mock/request :get "/"))]
      (:status response)=> 200))

  (fact "body text is 'Hello World'"
    (let [response (app (mock/request :get "/"))]
      (:body response)=> "Hello World")))

(facts "not-found route"
  (fact "response status is 404"
    (let [response(app (mock/request :get "/invalid"))]
      (:status response)=> 404)))

Run Code Online (Sandbox Code Playgroud)

当我使用clojure.test( lein test) 运行默认测试时,我没有收到警告,但是当我使用midje.sweet( ) 运行时,我收到有关“namespace: leiningen.midje”“replace #”clojure.core/any? 的lein midje警告。到#'leiningen.midje/任何?' ,我在网上寻找解决方案,但没有找到这个特定的警告(leiningen/compojure/midje),我是 clojure 和 midje 的初学者。我现在正在学习。我可以在哪个文件中替换这个命名空间?有简单的解决方案可以消除此警告吗?或者这是 midje 框架中的一个错误?

这不会干扰测试的执行,但每次运行测试时看到此消息很烦人。

注意:我也尝试过以前版本的 midje [midje "1.9.6"],但没有成功!

Em-*_*-AK 6

这个特殊问题已在此 Pull Request 中得到解决。

对于一般情况,您可以通过排除(=取消引用)您想要从另一个命名空间中需要的符号来消除此警告(当它来自您的代码时)clojure.core

这是来自不同上下文的示例:

警告

(ns urbest.apheleia.system.typography
  (:require [garden.units :refer [rem]]))
Run Code Online (Sandbox Code Playgroud)
WARNING: rem already refers to: #'clojure.core/rem in namespace: urbest.apheleia.system.typography, being replaced by: #'garden.units/rem
Run Code Online (Sandbox Code Playgroud)

不再有警告

WARNING: rem already refers to: #'clojure.core/rem in namespace: urbest.apheleia.system.typography, being replaced by: #'garden.units/rem
Run Code Online (Sandbox Code Playgroud)