标签: vimrunner

使用Vimrunner对Vim脚本本地函数进行单元测试

我正在使用Vimrunner对Vim插件进行单元测试.一切正常,但我正在寻找一种更好/规范的方式来执行脚本本地功能.由于它们在脚本外部不是直接可见的,因此我现在公开脚本<SID>并将其添加到我的调用中以便运行它们.

我必须将此代码添加到我的插件中以公开SID:

function! s:SID()
  let fullname = expand("<sfile>")
  return matchstr(fullname, '<SNR>\d\+_')
endfunction
let g:my_plugin_SID = s:SID()
Run Code Online (Sandbox Code Playgroud)

这将使SID暴露为例如<SNR>18_.由于Vim函数都是全局函数,并且只是名称,因此可以通过在SID前面为脚本调用脚本本地函数:

:call <SNR>18_some_function()
Run Code Online (Sandbox Code Playgroud)

然后我在一个规范中这样做:

describe "s:reverse_string" do
  let!(:sid) { VIM.command("echo g:my_plugin_SID") }

  def reverse_string(string)
    VIM.command("echo #{sid}reverse_string('#{string}')")
  end

  it "does something" do
    reverse_string("foo").should == "oof"
  end
end
Run Code Online (Sandbox Code Playgroud)

有一个更好的方法吗?

vim unit-testing vimrunner

6
推荐指数
1
解决办法
797
查看次数

标签 统计

unit-testing ×1

vim ×1

vimrunner ×1