私は、可能ならばファイル内のコードを変更することなく、Bustedを使って既存のLuaファイルの単体テストを作成しています。このファイルは別のファイルをインポートし、そのファイルからさまざまなメソッドをローカル関数に格納します。Unit Luaでのローカル関数のテスト
[examplefile.lua]
local helper = require "helper.lua"
local helper_accept = helper.accept
local helper_reject = helper.reject
foo = new function()
-- do something which uses helper_accept
-- do something which uses helper_reject
end
私はこれらのメソッドをスパイして、正しい場所で呼び出したことを確認します。しかし、私はテストからこれを行うための方法を見つけることができません。 私はのように、単にヘルパーメソッドをからかってみた:
[exampletest.lua]
local helper = require "helper.lua"
local examplefile = require "examplefile.lua"
-- mock the helper function to simply return true
helper.accept = new function() return true end
spy.on(helper, "accept")
examplefile:foo
assert.spy(helper).was().called()
が、実際のファイルがhelper_acceptとhelper_reject方法、ないhelper.acceptとhelper.rejectを使用すると、それは動作しません。
コードを変更せずにこれを行うことはできますか?おかげさまで
第ローカルファイルは、エクスポートされませんんだろう。しかし、helper.luaファイル全体をオーバーライドすることができるので、 'helper.accept'と' helper.reject'をロードするときに、あなたのフックされたバージョンの関数を使います。 – ktb
@ktbそれは論理的な方法のように聞こえる。あなたがこれを行うのを助けるどんなドキュメンテーションを知っていますか? – Ryan