interactiveな関数をertでテストしたい
Useful Techniques - Emacs Lisp Regression Testing
ertでテストするときに、引数を指定する系の関数だったらサンプルよろしくこんなふうに書けばいいけど、interactiveな関数で引数を ミニバッファとかで指定する系の関数はどうやってテストしたらいいんだろうって調べていた。
(ert-deftest ert-test-mismatch () (should (eql (cl-mismatch "" "") nil)) (should (eql (cl-mismatch "" "a") 0)) (should (eql (cl-mismatch "a" "a") nil)) (should (eql (cl-mismatch "ab" "a") 1)) (should (eql (cl-mismatch "Aa" "aA") 0)) (should (eql (cl-mismatch '(a b c) '(a b d)) 2)))
execute-kbd-macroとread-kbd-macroのコンボを使う。
こんな感じで。
(ert-deftest test-markdown-insertion/create-table-with-left-align () "Insert table with left align." (markdown-test-string "" (execute-kbd-macro (read-kbd-macro "M-x markdown-insert-table RET 2 RET 2 RET left RET id RET name RET")) (should (string-equal (buffer-string) "|id|name| |:--|:--| | | | | | | "))))