Unit testing 在中断测试期间模拟现有lua文件中的方法

Unit testing 在中断测试期间模拟现有lua文件中的方法,unit-testing,lua,mocking,resty,lua-busted,Unit Testing,Lua,Mocking,Resty,Lua Busted,我想使用Busted为现有lua文件编写单元测试。我想在测试期间交换一些方法,以便文件使用模拟/存根方法而不是实际方法运行(否则它将失败)。文件调用从其他lua库中引入的一些方法,我也想模拟这些方法 如何做到这一点 谢谢你的帮助 我认为您不容易替换本地函数,但替换导出的或全局函数很简单 例如,我需要通过rest.HTTP库中的HTTP:new().request(…)模拟HTTP调用。这就是我在测试中所做的: local http = require 'resty.http' http.new

我想使用Busted为现有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
更改全局函数或变量可以通过覆盖
\u G
来实现,例如,这将更改全局函数或变量
foo

_G.foo = ...
支持自动恢复环境。在中搜索“绝缘”