我試圖測試我們的Freeswitch lua腳本與busted和我遇到了一個障礙。它的要點是,我需要能夠對間諜的代碼類似於下面的測試與破壞lua腳本
local req_host = session:getVariable('sip_req_host')
session:setVariable('curl_timeout', 0)
但我似乎無法弄清楚如何建立,我應該設置_G.session對象。關於如何使用被破壞的最好的/唯一的好例子是https://github.com/chris-allnutt/unit-tested-corona/blob/master/mocks/button.lua,但它似乎使用相同的簡單語法來構建一個被破壞的文檔所做的模擬對象。
local button = {
x = 0,
y = 0,
addEventListener = function() end
}
我可以看到這是如何爲不需要任何回報的簡單功能的工作,但我需要能夠獲得和使用的getVariable和setVariable功能會話對象設置變量。我簡單的模擬對象如下:
Session = {}
Session.__index = Session
function Session.create(params)
local session = {}
setmetatable(session, Session)
session.params = params
return session
end
function Session:getVariable(key)
return self.params[key]
end
function Session:setVariable(key, val)
self.params[key] = val
end
function Session:execute(cmd, code)
end
和試驗如下
require "busted"
require("test_utils")
describe("Test voip lua script", function()
it('Test webrtc bad domain', function()
domain = 'rtc.baddomain.com';
session_params = {['sip_req_host'] = domain,
['sip_req_user'] = 'TEST-WebRTC-Client',
["sip_from_user"] = 'testwebrtc_p_12345',
['sip_call_id'] = '[email protected]_id',
['sip_authorized'] = 'false'}
exec_str = 'sofia_contact [email protected]'..domain;
api_params = {[exec_str] = 'error/user_not_registered'}
_G.session = mock(Session.create(session_params), 'execute')
_G.api = API.create(api_params)
_G.freeswitch = Freeswitch.create()
dofile("tested_script.lua")
assert.spy(_G.session.execute).called_with("respond", "407")
end)
end)
我結束了以下情況例外。 /usr/local/share/lua/5.2/luassert/spy.lua:78:試圖指數函數值
此異常是由luassert,在破獲庫的依賴拋出,在if語句如下
77:local function called_with(state, arguments)
78: if rawget(state, "payload") and rawget(state, "payload").called_with then
79: return state.payload:called_with(arguments)
80: else
81: error("'called_with' must be chained after 'spy(aspy)'")
82: end
83:end
我是很新的LUA所以它很可能是我只是缺少語言的一些明顯的部分,但任何幫助或指針將不勝感激。
是spy.lua與最後一個代碼片段的文件?如果是的話,哪一行是78行?如果不是什麼是spy.lua的第78行? –
我編輯我的帖子以添加相關的行。整個文件位於https://github.com/Olivine-Labs/luassert/blob/master/src/spy.lua – user3587406