yasuy****@javao*****
yasuy****@javao*****
2003年 12月 15日 (月) 17:18:19 JST
えんどうです。 環境によって結果が違う関数のテストコードはどう書くのが良いでしょうか...? > [function] dbd-search-driver-modules こんな関数を書きました。 (define (dbd-all-driver-modules) (let ((modules (library-map 'dbd.* (lambda (m p) (cons m (car (string-split (sys-basename p) #\.))))))) (if (null? modules) #f modules))) この関数のテストコードとして以下を書き、テスト合格としたのですが、 同じことをやって同じ結果が返るのは当り前なので、 テストとして正当なのか確信が持てません。 ;; dbd-all-driver-modules のテスト: ;; library-map を使い、存在する 'dbd.* モジュールすべてを得、 ;; dbd-all-driver-modules の戻り値と比較する。一致していたら合格 (test* "dbd-all-driver-modules" (library-map 'dbd.* (lambda (m p) (cons m (car (string-split (sys-basename p) #\.))))) (dbd-all-driver-modules)) > [function] dbd-search-driver-module driver-name この実装として以下の関数を書きました。 (define (dbd-search-driver-module driver-name) (let ((driver-module (path->module-name (string-append "dbd/" driver-name)))) (if (library-exists? driver-module) driver-module #f))) これをテストするのに以下を書いても、 "pg" ドライバーがない環境ではテストできません。 (test* "dbd-search-driver-module" 'dbd.pg (dbd-search-driver-module "pg")) すべてのドライバー名を得てひとつづつテストするしかないのかも知れません。 存在しないドライバー名をテストするには、 (test* "dbd-searh-driver-module null" #f (dbd-search-driver-module "")) これで良いのか自信ありません。 -- ENDO Yasuyuki <yasuy****@javao*****> http://www.javaopen.org/~yasuyuki/ (Personal/Japanese Only) http://www.javaopen.org/jfriends/ (Japanese Only)