比方說,我有以下兩個文件:狡詐/計劃 - 重新定義另一模塊的內部功能
;; demo.scm
(define-module (demo)
#:export (f))
(define (g x) 1)
(define (f x) (g x))
...並在同一目錄下:
;; use-demo.scm
(add-to-load-path ".")
(use-modules (demo))
(define (g x) (+ x 1))
(display (f 5))
(newline)
運行在狡詐use-demo.scm
(2 ),我得到輸出1
。所以它看起來像功能f
已'關閉'在模塊demo
中定義的功能g
。有什麼辦法可以解決這個問題嗎?我真的想要使用我已在use-demo.scm
中重新定義的g
版本。
謝謝彼得。我結束了這樣做:https://github.com/yawaramin/ggspec/blob/7feaef3b00348cac8415ec1f47d3057496b81009/lib.scm#L81 – Yawar
嗯。你的輕量級單元測試框架比我的小(https://github.com/peter-b/geda-gaf/blob/master/libgeda/scheme/unit-test.scm)。 :-P您可能希望竊取我對'assert-thrown'宏的想法。 –
顯然,在一個「真正的程序」中,如果多個線程正在運行,您的'stub'宏可能會很活躍,但它看起來像是一個用於測試目的的出色解決方案! –