首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将值传递给每个speclj规范?

将值传递给每个speclj规范?
EN

Stack Overflow用户
提问于 2016-03-06 14:29:51
回答 1查看 61关注 0票数 1

我想在每个规范之前开始一项服务,并在每个规范之后关闭它。同时,我希望每个规范都能够使用规范中的service。例如(这不起作用):

代码语言:javascript
复制
(describe
  "Something"

  (around [it]
          (let [service (start!)]
            (try
              (it)
              (finally
                (shutdown! service)))))

  (it "is true"
      ; Here I'd like to use the "service" that was started in the around tag
      (println service) 
      (should true))

  (it "is not false"
      (should-not false)))

我该怎么做?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-03-06 15:16:21

我在speclj中看不到对它的直接支持,而且它的内部设计不允许用这样的功能扩展它。但是,您可以只使用动态范围来实现它:

代码语言:javascript
复制
(declare ^:dynamic *service*)

(describe
  "Something"

  (around [it]
    (binding [*service* (start!)]
      (try
        (it)
        (finally
          (shutdown! *service*)))))

  (it "is true"
    (println *service*) 
    (should true))

  (it "is not false"
    (should-not false)))

*service*变量将绑定到(start!)binding作用域中的结果。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35828090

复制
相关文章

相似问题

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