所以我使用Busted爲現有的Lua文件創建單元測試,如果可能的話,在不更改文件中的代碼的情況下。該文件導入另一個文件,然後將該文件中的各種方法存儲在本地函數中,如下所示。單元測試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