私は単一のファイルのLuaスクリプト、例えばscript.lua
からユニットテスト関数を使用したいと思います。スクリプトは次のようになります、次のとおりです。1つのファイルLuaスクリプトの中でどのように関数をテストできますか?
-- some fields from gvsp dissector which shall be post processed in custom dissector
gvsp_field0_f = Field.new("gvsp.<field0-name>")
gvsp_field1_f = Field.new("gvsp.<field1-name>")
-- custom protocol declaration
custom_protocol = Proto("custom","Custom Postdissector")
-- custom protocol field declarations
field0_f = ProtoField.string("custom.<field0-name>","Custom Field 0")
field1_f = ProtoField.string("custom.<field1-name>","Custom Field 1")
-- register custom protocol as postdissector
register_postdissector(custom_protocol)
function custom_protocol.dissector(buffer,pinfo,tree)
-- local field values of "pre" dissector which are analyzed
local gvsp_field0_value = gvsp_field0_f()
local gvsp_field1_value = gvsp_field1_f()
-- functions which shell be unit tested
function0(...)
function1(...)
end
function0(...)
-- implementation
end
function1(...)
-- implementation
end
だが、私は(おそらく物事を簡単になるだろう)別のモジュールファイルにスクリプトファイルから機能を分離したくないとしましょう。 script.lua
ファイル内または別のtest_script.lua
ファイル内のscript.lua
に定義されている関数に対して、テストを定義するにはどうすればよいですか(統合するのが簡単なので、好ましくはluaunitですが、他のツールも同様です)。
これは_how _に_ _あなたが物事を定義する_a _に依存します。あなたは 'local'を使っていますか(それは事態をかなり困難にします)、あるいは'ローカル '_ENV'ironmentsを(もっと簡単に)使用しますか?コードはどのように構造化されていますか?関数などを定義する方法の小さなコードサンプルを追加してください(実際のコードでなくても、あなたのものを定義する方法に一致するダミー関数だけでなくてもかまいません)。現在、意味のある情報答え。 – nobody
スクリプトは、 'dissector'プロトコルで使われているファイルの最後に' local'関数が定義されたhttps://wiki.wireshark.org/Lua/Dissectors#postdissectorsのポストディセクターとよく似ています。しかし、私はこの構造に固執しません。 – thinwybk