1
1
我认为你使这个问题比必须的更困难。
假设module storagemanager.lua本身没有本地化
如果模块确实本地化了
编辑: 通过对模块进行性能本地化,我的意思是将模块的方法复制到模块名称空间中的局部变量中的lua习惯用法。例如: -- somemodule.lua require "io" require "math" -- copy io and math to local variables local io,math=io,math -- begin the module itself, note that package.seeall is not used so globals are -- not visible after this point module(...) function doMathAndIo() -- does something interesting here end
如果您这样做,那么对stock模块的引用
要有效地模拟与此习语一起使用的模块,必须将模拟对象放置到位。
之前
呼唤
以下是在测试用例中,在调用期间如何替换IO对象: function test_load_reads_file_properly() io_mock = mc:mock() file_handle_mock = mc:mock() io_mock:open(VALID_FILENAME, "r");mc:returns(file_handle_mock) file_handle_mock:read("*all") file_handle_mock:close() mc:replay() local saved_io = _G.io _G.io = io_mock package.loaded.io = io_mock storageManager = StorageManager:new{ } storageManager:load(VALID_FILENAME) _G.io = saved_io package.loaded.io = saved_io mc:verify() end 我可能没有在正确的时间恢复真实的物体,这是未经测试的,但它应该指向正确的方向。 |
Phil Gunning · 使用嵌套函数更改进行模拟测试 2 年前 |
Korr · 如何用Jest模拟组件测试中服务的功能 2 年前 |
Jordan Lee · 在另一个类中使用实例方法作为装饰器 6 年前 |
user2350138 · 为WireMock构建Java项目 6 年前 |
user8584384 · 单元测试不起作用,因为导入的文件作为输入 6 年前 |
Vino · 如何模拟Python类的对象? 6 年前 |
Enrico · .NET核心ASP。带有会话和测试的NET控制器 6 年前 |