问题标签 [lua-busted]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
124 浏览

lua - Busted 无法识别某些功能

我正在使用 Busted 框架来测试我的 lua 程序。我有最新的破解版本

user ~ $ busted --version 2.0.rc12-0 我运行了这个程序(它叫做 etl) goto statement ::statement:: error loading module 'etl' from file './etl.lua': ./etl.lua:6: '=' expected near 'statement'

编辑:我很确定 busted 引用的是 lua 5.1 或 5.2,但我的系统上只有 lua 5.3.3。那么我如何才能识别 5.3.3 呢?

证明我的系统上只有 lua 5.3.3

me ~ $ luaver list ==> Installed versions: ==> lua-5.3.3

更新:我在另一个 luaver 无法识别的文件夹中隐藏了一些不同版本的 lua。我删除了这些,然后每次尝试运行它时都给了我这个: /usr/local/bin/busted: 3: exec: /usr/bin/lua5.1: not found 然后我转到 /usr/local/bin/busted 中的破坏文件,就像这样

所以我需要把所有这些东西都改成lua5.3。我的 lua 5.3 在 /usr/local/bin 中。我是否只是拿那个文件并开始删除 5.1 的东西并用 5.3 的东西替换它?

0 投票
1 回答
2037 浏览

unit-testing - 在 Busted 测试期间模拟现有 lua 文件中的方法

我想使用 Busted 为现有的 lua 文件编写单元测试。我想在测试期间换掉一些方法,以便文件使用模拟/存根方法而不是真实方法运行(否则它将失败)。文件调用的一些方法是从其他 lua 库中提取的,我也想模拟这些方法。

如何做到这一点?

任何帮助表示赞赏,谢谢。

0 投票
1 回答
1194 浏览

unit-testing - Lua中的单元测试本地功能

所以我使用 Busted 为现有的 Lua 文件创建单元测试,尽可能不更改文件中的代码。该文件导入另一个文件,然后将该文件中的各种方法存储在本地函数中,就像这样。

我想在我的测试中监视这些方法,以确保它们在正确的位置被调用。但是,我无法从测试中找到任何方法来做到这一点。我试过简单地模拟出辅助方法,如:

但这不起作用,因为真实文件使用 helper_accept 和 helper_reject 方法,而不是 helper.accept 和 helper.reject。

这可以在不更改代码的情况下完成吗?谢谢。

0 投票
1 回答
1308 浏览

lua - 如何为返回 ok,err 的函数编写破坏的单元测试?

我有一个 Lua 函数,它返回false后跟错误消息,并希望使用破坏的测试框架来测试它的行为。现在我这样做有点像这样:

我不喜欢我目前的方法有两点:

  • 每个测试是 3 行而不是单个干净的行
  • 当第三次测试失败时,busted 只是说这false不是预期的真实值,并且从未提及“除以零”错误消息。

有没有办法改进我的测试文件以避免这些问题?

我认为我想做的有点类似于has_errorbusted 中的断言,但这似乎只适用于实际引发异常的函数,而不适用于返回false后跟错误消息的函数。

0 投票
2 回答
106 浏览

lua - luassert 库中的断言是否有类似于内置 `error` 函数的`level` 参数?

我目前正在使用 busted/luassert 编写一个测试套件,并且由于我将一些断言放在一个单独的函数中,所以我得到了不准确的堆栈跟踪。例如,考虑以下测试套件 (a_spec.lua):

当我运行它时,我的测试用例失败了,但堆栈跟踪指向第 2 行,所以我不知道这两个断言中的哪一个是失败的。

有没有办法让它指向第 7 行或第 8 行?一种可能的方法是,如果 luassert 的 assert.is_true 函数具有类似于内置错误函数的级别参数。

查看 luassert 的源代码,它似乎确实关心堆栈级别,但我无法弄清楚这个功能是内部的还是以某种方式暴露给用户的。

0 投票
1 回答
1165 浏览

unit-testing - 使用 Busted 对 Lua 代码进行单元测试时模拟本地导入

我对 Lua 很陌生,我正在尝试测试我在 Nginx 服务器上运行的脚本。我被推荐 Busted 但我似乎无法弄清楚如何模拟一些本地进口。

Lua 代码导入以下内容:

在测试 _spec 文件中,我是这样开始的:

我在fake_http.lua里面创建了一个文件spec/resty/http

但是当我运行一个虚拟测试时,我收到以下错误:

知道我在这里做错了什么吗?

0 投票
1 回答
136 浏览

lua - 测试失败并出现错误时如何获取完整的堆栈跟踪?

特别是在开发某种测试驱动时,如果 busted 输出完整的堆栈跟踪以测试因错误而失败的测试,这将非常有用。我似乎找不到允许这样做的失败选项。

有什么方法可以获得完整的堆栈跟踪而不是单行错误消息?

0 投票
0 回答
278 浏览

lua - 从 luarocks 运行 busted - 'busted' 不被识别为内部或外部命令

我刚开始学习 Lua(而且对编程/命令行一般都很陌生),我正在尝试从 luarocks 安装 busted(一个测试框架)。当我运行“luarocks install busted”时,它说它已安装,但是当我运行“busted”时,它说它不被识别为命令。我尝试将 busted 的安装位置添加到我的 Path 变量中,但到目前为止这似乎不起作用。目前我正在使用Windows。

这是我得到的错误:

'busted' 不是内部或外部命令、可运行程序或批处理文件。

0 投票
1 回答
73 浏览

lua - 有没有办法使用 Lua 的 Busted 测试框架设置看门狗计时器?

我的测试套件中的一个测试用例触发了我的程序中的一个错误,导致它进入无限循环。此错误还会导致程序消耗无限量的内存,因此我的系统很快开始交换到磁盘并且变得非常无响应。

有什么方法可以让我的测试套件杀死运行时间过长和/或消耗过多内存的测试?如果测试套件以“花费太长时间”的错误使这些错误的测试用例失败,而不是让它们失控,我更愿意。

我可以用 Busted 做些什么来防止测试套件陷入这些情况。我宁愿让这个测试用例失败,出现“返回时间太长”的错误,而不是 t

0 投票
2 回答
117 浏览

lua - 有没有办法并行运行 Busted 测试套件?

我的 Lua 项目的测试套件在目录中分成多个文件spec/。有没有办法让 busted 并行运行这些测试?如果我busted在没有任何参数的情况下调用它,它会按顺序运行所有测试。