首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用单元测试检查Clojure代码的体系结构

使用单元测试检查Clojure代码的体系结构
EN

Stack Overflow用户
提问于 2018-05-23 13:08:58
回答 1查看 531关注 0票数 4

我被启发买了这本书:建筑进化建筑洁净建筑

其中一个概念是能够在代码中测试您的体系结构。特别是,我希望能够检查名称空间、层之间的依赖关系,并断言名称空间不为另一层调用命名空间。

我所有的名称空间都在圆圈内:

其想法是‘控制器’中的名称空间不能导入‘实体’内的名称空间,而只能导入他下面的名称空间(用例)。我想在我的单元测试中检测到这一点。

因此,这应该在我的单元测试中失败:

代码语言:javascript
复制
(ns com.controller.core
  (:require [com.entities.core :as entities]
            [com.use-cases.core :as use-cases]))

(defn do-something [args]
      (let [use-cases-results (use-cases/do-something args)]
           (entities/do-some-other-thing use-cases-results)))

在java中,您可以使用弓形单元编写这类单元测试。

代码语言:javascript
复制
private final JavaClasses classes = new ClassFileImporter().importPackagesOf(Controller/core.class);

noClasses().that().resideInAPackage("..controller..").should().accessClassesThat().resideInAPackage("..use-cases..").check(classes);

您是否在clojure中使用了类似的东西,或者您有一些如何解决这个问题的建议?

EN

回答 1

Stack Overflow用户

发布于 2021-08-20 16:21:16

使用ns-指怎么样,比如:

代码语言:javascript
复制
(deftest controllers-should-not-refer-to-entities
  (is (->> (all-ns)
           (filter #(clojure.string/includes? % "controller"))
           (map ns-refers)
           (map vals)
           flatten
           (not-any? #(clojure.string/includes? % "entities")))))
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50489295

复制
相关文章

相似问题

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