1
我想使用Busted爲現有lua文件編寫單元測試。我想在測試過程中換出一些方法,以便文件可以使用模擬/存根方法而不是真正的方法運行(否則將失敗)。一些文件調用的方法從其他lua庫中提取,我也想嘲笑這些。模擬測試期間現有lua文件中的模擬方法
這是如何實現的?
任何幫助表示讚賞,謝謝。
我想使用Busted爲現有lua文件編寫單元測試。我想在測試過程中換出一些方法,以便文件可以使用模擬/存根方法而不是真正的方法運行(否則將失敗)。一些文件調用的方法從其他lua庫中提取,我也想嘲笑這些。模擬測試期間現有lua文件中的模擬方法
這是如何實現的?
任何幫助表示讚賞,謝謝。
我不認爲你可以很容易地替換本地函數,但它很直接取代導出或全局函數。
例如,我需要通過rest.http
庫中的http:new().request(...)
模擬HTTP調用。這是我在測試中所做的:
local http = require 'resty.http'
http.new = function()
return {
request = function(self, args)
-- ... some mock implementation
end
}
end
這種方法應該適用於任何導出的函數。例如,要從庫bar
替換函數foo
。
local bar = require 'bar'
bar.foo = myMockImpl
改變全局函數或變量可以通過覆蓋_G
來實現,例如,這將改變全局函數或變量foo
:
_G.foo = ...
破獲支持自動恢復環境。在documentation中搜索「絕緣」。