Tôi làm cách nào để thử nghiệm một hàm có thể ném ngoại lệ dự kiến? Đây là chức năng ném ngoại lệ:Làm cách nào để viết một bài kiểm tra để xử lý ngoại lệ dự kiến?
(defn seq-of-maps?
"Tests for a sequence of maps, and throws a custom exception if not."
[s-o-m]
(if-not (seq? s-o-m)
(throw (IllegalArgumentException. "s-o-m is not a sequence"))
(if-not (map? (first s-o-m))
(throw (IllegalArgumentException. "s-o-m is not a sequence of maps."))
true)))
Tôi muốn thiết kế một thử nghiệm như sau, trong đó ngoại lệ được ném và bắt và sau đó so sánh. Sau đây không hoạt động:
(deftest test-seq-of-maps
(let [map1 {:key1 "val1"}
empv []
s-o-m (list {:key1 "val1"}{:key2 "val2"})
excp1 (try
(seq-of-maps? map1)
(catch Exception e (.getMessage e)))]
(is (seq-of-maps? s-o-m))
(is (not (= excp1 "s-o-m is not a sequence")))))
Tôi nhận được các lỗi này:
Testing util.test.core
FAIL in (test-seq-of-maps) (core.clj:27)
expected: (not (= excp1 "s-o-m is not a sequence"))
actual: (not (not true))
Ran 2 tests containing 6 assertions.
1 failures, 0 errors.
Rõ ràng, tôi đang thiếu một cái gì đó về cách viết bài kiểm tra. Tôi đang gặp khó khăn trong việc tìm ra điều đó. Dự án của tôi đã được thiết lập với lein mới, và tôi đang chạy các bài kiểm tra với thử nghiệm lein.
Cảm ơn.
có thể trùng lặp của [Làm thế nào để tôi mong đợi thất bại trong một bài kiểm tra đơn vị?] (Http://stackoverflow.com/questions/7852092/how-do-i-expect-failure-in-a-unit-test) –