5

我正在为我的第一个 Clojure 项目编写测试用例。在这里,如果 ":meat" 的值为空,我希望测试失败:

(deftest order-sandwich
  (let [response {:meat "" :bread "yes" :add-on "lettuce"}]
    (is (= (:bread response) "yes"))
    (is (not (nil? (:meat response))))))

但是我的测试运行成功(返回“nil”)。

有人知道为什么会这样吗?有一个更好的方法吗?

我提前谢谢你!!

4

1 回答 1

6

空字符串不是nil

(nil? "")
=> false

您想测试它是否为空,而不是nil,这可以使用seqor empty?(以及其他方式)来完成:

(is (not (empty? (:meat response))))
; Or use not-empty

; There's also the arguably more idiomatic way

(is (seq (:meat response)))
于 2019-03-14T21:00:23.020 回答