выброшен-с-сообщ?создает исключение RuntimeException с неподдерживаемым символом - PullRequest
0 голосов
/ 27 ноября 2018

Я пытаюсь запустить тест, который, как ожидается, выдает какое-то исключение.throws? работает нормально, но когда я пытаюсь thrown-with-msg?, выдается исключение.Чтобы проверить это, я взял строки из документации

Код:

(deftest check-exception
  (testing "If Exception is thrown"
    (is (thrown-with-msg? java.lang.ArithmeticException #\"Divide by zero\" (/ 1 0)))))

Ошибка компиляции:

Исключение в потоке "main"clojure.lang.LispReader $ ReaderException: java.lang.RuntimeException: неподдерживаемый символ: \ "Divide

3-й параметр, который необходимо передать, - Regular Expression. Как передать это?

Ответы [ 2 ]

0 голосов
/ 27 ноября 2018

Литерал для регулярного выражения в Clojure - #"... ".Таким образом, \, который вы используете, неверен.Если вы хотите иметь кавычки внутри литерала регулярных выражений, то вы цитируете их, как делали.Например, #"\"Divide by zero\""

edit : источник путаницы (буквально)

Исходный код фактически содержит эту строку в строке документа:

(is (thrown-with-msg? ArithmeticException #\"Divide by zero\"
                      (/ 1 0)))

Но это связано с необходимостью также указывать " в комментарии к документу.Если вы посмотрите на документ, например, doc в REPL

user=> (require 'clojure.test)
user=> (doc clojure.test)
...
   (is (thrown-with-msg? ArithmeticException #"Divide by zero"
                         (/ 1 0)))
...

, то увидите правильный код.

0 голосов
/ 27 ноября 2018

Regex следующим образом:

(deftest check-exception
  (testing "If Exception is thrown"
    (is (thrown-with-msg? java.lang.ArithmeticException #"^.*Divide by zero.*$" (/ 1 0)))))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...