我在使用test.check和普通测试时遇到了困难。我一整天都在努力弄清楚到底是怎么回事,但我还是不确定。这就是我现在拥有的:
(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中尝试这个时,它只是失败了。
发布于 2014-06-15 20:52:13
如果我正确地理解了您的更新,您的测试预计会抛出异常。如果没有出现异常,那么测试就会失败。
如果是这样的话,那么您将需要用defspec中的属性来捕获异常,将其作为一个值返回,并验证异常是否发生。
你可以这样做:
(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)))))https://stackoverflow.com/questions/24224755
复制相似问题