在compojure中测试静态路由

 淡定神仙2502891317 发布于 2023-02-12 20:32

我正在尝试为compojure静态内容路由编写测试。我正在通过直接检查振铃响应来测试路由。

一个最小的工作示例如下:

;; src/testing-webapps.core.clj
(ns testing-webapps.core
  (:use [compojure.core]
        [compojure.route   :as route]))

(defroutes web-app
   (route/resources "/")
   (route/not-found "404"))


;; test/testing-webapps.core_test.clj
(ns testing-webapps.core-test
  (:require [clojure.test :refer :all]
            [testing-webapps.core :refer :all]))

(defn request [resource web-app & params]
  (web-app {:request-method :get :uri resource :params (first params)}))

(deftest test-routes
  (is (= 404 (:status (request "/flubber" web-app))))
  (is (= "404" (:body (request "/flubber" web-app))))
  (is (= 200 (:status (request "/test.txt" web-app)))))

测试404路由效果很好,但调用(request "/test.txt" web-app)会导致出现意外NullPointerException情况ring.middleware.file-info/not-modified-since?

这是堆栈跟踪的顶部:

ERROR in (test-routes) (file_info.clj:27)
Uncaught exception, not in assertion.
expected: nil
  actual: java.lang.NullPointerException: null
 at ring.middleware.file_info$not_modified_since_QMARK_.invoke (file_info.clj:27)
    ring.middleware.file_info$file_info_response.doInvoke (file_info.clj:44)
    clojure.lang.RestFn.invoke (RestFn.java:442)
    ring.middleware.file_info$wrap_file_info$fn__917.invoke (file_info.clj:64)
    [...]

静态路由在浏览器中可以正常工作,但不能通过我的request函数调用。

有没有更简单的方法可以在compojure中测试静态路由,为什么在用自己的请求映射调用静态路由时出现NullPointerException?

1 个回答
  • 纵观源not-modified-since?,我认为这个问题是你有没有头在你的要求的地图,所以它抛出这个expr的一个NPE: (headers "if-modified-since")。尝试request像这样更改方法:

    (defn request [resource web-app & params]
      (web-app {:request-method :get 
                :headers {"content-type" "text/plain"} ; added a header
                :uri resource 
                :params (first params)}))
    

    您可能还考虑使用ring-mock创建测试请求。它使您与此类事物隔离了一点。

    2023-02-12 20:36 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有