クラスにいくつかの定数が定義されていると予想されるオブジェクトをモックする必要があります。
class Driver
DRIVER_NAME = "google"
end
初期化にコストがかかるため、単体テストでクラスのインスタンスを単純に使用したくありません。さらに、シンプルなインターフェイスを備えているため、モックに最適です。単純にサブクラスMocha::Mock化していくつかの定数を追加できれば完璧です。ただし、これらのサブクラスをインスタンス化する方法は見つかりませんでした。初期化引数として「嘲笑」が必要です。私は試した:
TestDriver.new(self.mock.instance_method_get(:@mockery))
これは非常に面白い結果になりました:
予期しない呼び出し: #<Mock:0x35c0690>.instance_method_get(:@mockery)
モカのソースはかなり複雑で絡み合っています。mock各Minitest::Testオブジェクトの が作成されるポイントさえ見つかりません。
では、Mocha でモックをサブクラス化するにはどうすればよいでしょうか? まっすぐ進む方法はありますか?
私のバックアップ ソリューションは、モックを使用する代わりに上記の 3 行のクラスを単純に使用することですdriver.stubs(:name)...が、それは問題を解決するには間違った方法のように感じます。