私のコードには、次の不自然な例のようなコードがあります。
class Excel
def self.do_tasks
with_excel do |excel|
delete_old_exports
export_images(excel)
export_documents(excel)
end
end
def with_excel
excel = WIN32OLE.connect('Excel.Application')
begin
yield excel
ensure
excel.close()
end
end
end
ここで、「do_tasks」メソッドのテストを書きたいと思います。そこでは、メソッド呼び出しの期待値を設定し、それらの期待値が満たされるかどうかを確認します。
次のアプローチを試しました(shoulda-contextとtest-unitを使用)。ただし、最後の 3 つのモックでは、期待は失敗します (モックは呼び出されません)。
class ExcelTest < ActiveSupport::TestCase
should "call the expected methods" do
mock.proxy(Excel).with_excel
mock(Excel).delete_old_exports
mock(Excel).export_images.with_any_args
mock(Excel).export_documents.with_any_args
Excel.do_tasks
end
end
この種のコードをテストする方法についての指針は大歓迎です!