2012年10月12日(Fri) 久しぶりに歩いたよ [長年日記]
● [tDiary][Ruby] プラグインをテストするフレームワークがつくれない
テストケースの中でプラグインに書くのと同じコードが書けるとうれしいと思って ヘルパを用意しようとしているのだけれど、 プラグインのコードの中で定義されたクラスにアクセスできない。
どうも、下記が最小限のコードに近いような気がする。 フレームワーク中でプラグインのコードをinstance_eval()するメソッドを定義して テストケース中からロードし実行するのを模して、 モジュールM内でクラスXの定義をinstance_eval()するメソッドmを定義して トップレベルから実行してみる。
class Xをみつけられない。
モジュール内に囲いこまなければ期待通り動作してくれる。
僕はモジュールについて何か勘違いしてるんだろうな。
(追記) instance_eval()じゃなくてeval()なら ほぼ期待通りに動くんだよね。 でもテストケースにする時は、それぞれのテスト(スイート?)について 繰り返し読まれるのでinstance_eval()にしておきたい。
(また追記) evalで定数を再定義するWarningが出るコード。
(追記) kouさんによる、 コードをロードするためのクラスを毎回作る方法。
● あと、この日誌はvolatile.tdrが大きくなりすぎると一日分のレンダリングがタイムアウトするような気がする。
最近のツッコまれどころ