首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >修复“警告:任何?已经引用了:#'clojure.core/any?在命名空间: leiningen.midje中,被替换为:#‘leininc.midje/ any?”

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

Stack Overflow用户
提问于 2019-05-28 14:58:45
回答 1查看 1.5K关注 0票数 2

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

代码语言:javascript
复制
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

代码语言:javascript
复制
(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

代码语言:javascript
复制
(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)运行时,我会收到关于名称空间的警告: leiningen.midje'‘替换#'clojure.core/any?改为#’leininc.midje/any?‘,我在网上搜索解决方案,但我找不到这个特别的警告(leiningen/compojure/ midje ),我是Clojure.core和midje的初学者。我正在学习。在哪个文件中可以替换这个命名空间?是否有简单的解决方案来删除此警告?或者这是框架midje的错误?

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

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-02-24 18:09:25

这个特殊的问题已经解决了在这个拉请求中

在一般情况下,您可以删除此警告(当它来自您的代码时),方法是从clojure.core以外的另一个命名空间中排除(= excluding )所需的符号。

下面是一个来自不同上下文的示例:

警告

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

不再有警告

代码语言:javascript
复制
(ns urbest.apheleia.system.typography
  (:refer-clojure :exclude [rem])
  (:require [garden.units :refer [rem]]))
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56345030

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档