说,我有一个像
这样的测试类(ns some-tests)
(deftest some-test []
...
(let [x (complicated-object ..)]
...))
我使用
从REPL会话中运行它(run-tests 'some-tests)
当测试失败时,我经常需要检查x。 通常,(complex-object ..)依赖于之前构建的其他对象,因此我无法手动在REPL会话中轻松创建x。
因此,我想用一种廉价的方法从我在REPL会话中可用的实际测试中创建这个x。我尝试将它包装在Exception中,抛出它并在REPL中捕获它,但是单元测试本身就能捕获所有异常。
有人知道如何做到这一点(没有将对象序列化为磁盘)?
PS:我知道引入断点的黑客行为: https://coderwall.com/p/xayyvq/break-point-in-clojure, 但这是一个新的REPL;不是我原来的REPL。
答案 0 :(得分:0)
为什么不在测试之外(def x(复杂...))?
答案 1 :(得分:0)
我忽略了使用原子做这个的明显方法。
(ns some-tests)
(def tmp (atom nil))
(deftest some-test []
...
(let [x (complicated-object ..)]
(reset! tmp x)
...))
运行此测试后,在REPL中,可以在
中获取x的值@some-tests.tmp