by shigemk2

当面は技術的なことしか書かない

interactiveな関数をertでテストしたい

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|
|:--|:--|
|   |   |
|   |   |
"))))