Clojure "is" 断言未按预期工作
Clojure "is" assertion not working as expected
我正在为我的第一个 Clojure 项目编写测试用例。在这里,如果“:meat”的值为空,我希望测试失败:
(deftest order-sandwich
(let [response {:meat "" :bread "yes" :add-on "lettuce"}]
(is (= (:bread response) "yes"))
(is (not (nil? (:meat response))))))
但我的测试运行成功(返回 "nil")。
有人知道为什么会这样吗?有更好的方法吗?
先谢谢你了!!
空字符串不是 nil
:
(nil? "")
=> false
您想测试它是否为空,而不是 nil
,这可以使用 seq
或 empty?
(以及其他方式)来完成:
(is (not (empty? (:meat response))))
; Or use not-empty
; There's also the arguably more idiomatic way
(is (seq (:meat response)))
我正在为我的第一个 Clojure 项目编写测试用例。在这里,如果“:meat”的值为空,我希望测试失败:
(deftest order-sandwich
(let [response {:meat "" :bread "yes" :add-on "lettuce"}]
(is (= (:bread response) "yes"))
(is (not (nil? (:meat response))))))
但我的测试运行成功(返回 "nil")。
有人知道为什么会这样吗?有更好的方法吗?
先谢谢你了!!
空字符串不是 nil
:
(nil? "")
=> false
您想测试它是否为空,而不是 nil
,这可以使用 seq
或 empty?
(以及其他方式)来完成:
(is (not (empty? (:meat response))))
; Or use not-empty
; There's also the arguably more idiomatic way
(is (seq (:meat response)))