首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将test.check和clojure测试结合起来

将test.check和clojure测试结合起来
EN

Stack Overflow用户
提问于 2014-06-14 22:08:05
回答 1查看 311关注 0票数 2

我在使用test.check和普通测试时遇到了困难。我一整天都在努力弄清楚到底是怎么回事,但我还是不确定。这就是我现在拥有的:

代码语言:javascript
复制
(deftest user-can-only-be-inserted-once
  (;normal test))

(defspec insert-one-user-should-let-me-retrieve-that-one-user
         gen-quantity
         (prop/for-all ; test.check test))

现在,只要我在测试文件中的每次更改之后从控制台执行"lein“,它就会像预期的那样工作。但是,通过"lein“运行来自草文件repl的测试或使用quickie插件运行repl将重新加载名称空间不正确。

其结果是,每当测试失败而我修复该测试时,它仍然会在repl中失败,因此看起来有些东西在那里不能正常工作。

如果有人知道怎么解决这个问题,我很高兴听到。我也想知道某人是否有一个不同的设置,它结合了正常的测试和test.check,或者这根本不打算工作。

谢谢你,斯文

更新实际上我发现问题不是normal和test.check的组合,而是我试图检查断言的事实是抛出一个特定的案例。在正常的测试中,你会用(抛出)来完成这个任务。断言(功能..。但是,当我在test.check中尝试这个时,它只是失败了。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-06-15 20:52:13

如果我正确地理解了您的更新,您的测试预计会抛出异常。如果没有出现异常,那么测试就会失败。

如果是这样的话,那么您将需要用defspec中的属性来捕获异常,将其作为一个值返回,并验证异常是否发生。

你可以这样做:

代码语言:javascript
复制
(defn catcher [f]
  (try (f)
   (catch Throwable t t)))

(defspec some-specification-name
  (prop/for-all [...generator-bindings...]
    (not-nil? (catcher (my-function generated-values)))))
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24224755

复制
相关文章

相似问题

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