Горячее исправление ПРЕДУПРЕЖДЕНИЕ: есть? уже ссылается на: #'clojure.core/any? в пространстве имен: leiningen.midje заменяется на: #'leiningen.midje/any?

Я пытаюсь запустить тесты в шаблоне compojure leiningen (lein new compojure financeiro), используя среду midje, и получаю предупреждение:

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.

Мой тестовый код handler_test.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)))

Мой файл проекта project.clj:

(defproject financeiro "0.1.0-SNAPSHOT"
  :description "FIXME: write description"
  :url "http://example.com/FIXME"
  :min-lein-version "2.0.0"
  :dependencies [
    [org.clojure/clojure "1.10.0"]
    [compojure "1.6.1"]
    [ring/ring-defaults "0.3.2"]
  ]
  :plugins [
    [lein-ring "0.12.5"]
  ]
  :ring {
    :handler financeiro.handler/app
  }
  :profiles {
    :dev {
      :dependencies [
        [javax.servlet/servlet-api "2.5"]
        [ring/ring-mock "0.3.2"]
        [midje "1.9.8"]
      ]
      :plugins [
        [lein-midje "3.2.1"]
      ]
    }
  }
)

Когда я запускаю тесты по умолчанию с clojure.test (lein test), я не получаю предупреждения, но при запуске с midje.sweet (lein midje) я получаю предупреждение о 'namespace: leiningen.midje' и 'replace #'clojure.core/любой? на #'leiningen.midje/any?', я ищу решение в Интернете, но не нахожу этого конкретного предупреждения (leiningen/compojure/midje), я новичок в clojure и midje. Я сейчас учусь. В каком файле я могу заменить это пространство имен? Есть простое решение, чтобы удалить это предупреждение? Или это баг в фреймворке midje?

Это не мешает выполнению тестов, но раздражает видеть это сообщение каждый раз, когда он запускает тесты.

Примечание: Я пробовал и предыдущую версию midje [midje "1.9.6"], но безуспешно!


person Chinnon Santos    schedule 28.05.2019    source источник
comment
Сейчас в рамках проекта lein-midje есть открытая проблема, связанная с этим. Я не верю, что вы сможете исправить это в своем проекте.   -  person dpassen    schedule 28.05.2019


Ответы (1)


Эта конкретная проблема была решена в этом запросе на включение.

В общем случае вы можете избавиться от этого предупреждения (когда оно исходит из вашего кода), исключив (= не ссылаясь) символ, который вы хотите потребовать, из другого пространства имен, чем clojure.core

Вот пример из другого контекста:

Предупреждение

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

Больше никаких предупреждений

(ns urbest.apheleia.system.typography
  (:refer-clojure :exclude [rem])
  (:require [garden.units :refer [rem]]))
person Em-AK    schedule 24.02.2020
comment
также см. stackoverflow.com/questions/8233434/ - person Em-AK; 24.02.2020