问题标签 [lab]

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 投票
2 回答
1174 浏览

hapijs - Hapi Lab 如何测试所有必填字段

有没有一种方法可以检查所有必填字段而无需测试每个字段。

验证规则

测试

0 投票
1 回答
947 浏览

javascript - 使用实验室测试 Hapijs API

我开始使用 Lab 来测试我的 API。API 执行通常的 CRUD 操作,我想知道我应该如何测试需要文档 ID 的 Update 和 Delete 方法。

我的 API 在内部返回新创建的 mongo 文档response.payload。我不明白为什么在DELETE测试resultId中是undefined.

这是我的代码:

0 投票
1 回答
1790 浏览

node.js - `lab` 和 `code` 与 `mocha` 和 `chai` nodejs 库之间的比较

我是 node.js 的新手,我决定将 hapijs 用于我的 Web 和 API 实现。

但是,我发现 hapi 社区为测试和断言库构建和使用laband code,它们是对mochaand的重写chai

我很难找到这些库之间的差异。

我知道可以互换使用它们,但我想要更详细的比较,因为我想定义和遵守编码标准,而且我不喜欢库的混合和匹配,除非有正当理由。

任何反馈表示赞赏

0 投票
1 回答
525 浏览

node.js - 在 Hapi.js Lab 中如何正确覆盖这个测试用例?

我的 Hapi.Js 服务器中有文件上传 POST 点。这是代码:

}]);

如何正确覆盖此代码/点的“应返回上传的图像路径”的情况,而不会触及 DB 和 AWS?

0 投票
1 回答
610 浏览

javascript - Mongoose 模型单元测试 - 如果任何测试用例失败,连接将不会关闭

我正在使用 Lab 和Mockgoose为我的 Mongoose 模型创建一些单元测试,并且我正在通过 Labslab.before()方法打开数据库连接,然后在 labslab.after()方法中终止数据库连接。我遇到的问题是,如果任何测试用例失败,则连接不会关闭,但lab.after() 执行(我添加了一些控制台输出进行调试)

所以如果我改变:

至:

然后它工作得很好。但是如果我模拟一个测试用例失败,那么“ Closing ”和“ Closed ”都会出现在控制台中,但连接本身永远不会关闭......它只是挂在那里直到我点击 ctrl+c

我在上面的代码中遗漏了什么吗?

更新

我查看了正在运行的进程,看看测试用例失败时是否有处理挂起:

0 投票
2 回答
698 浏览

javascript - Hapi.js 实验室测试结果不一致

我正在尝试使用注册功能测试 Hapi.js 插件:

我的测试文件在这里:

一切都很好,直到我添加了“使用现有用户名的 /register 端点”。

现在,lab 命令的后续调用成功退出,然后测试 5 和 6 失败(它像这样继续下去,一次成功,然后一次失败)。基本上,看起来结果状态代码在成功测试启动后被交换。

看起来像一个同步问题,但我找不到原因。有任何想法吗?

0 投票
1 回答
616 浏览

node.js - 在单独的文件中对 Mongoose 模型进行单元测试会导致问题(使用 Mockgoose & Lab)

每当 Mongoose 模型在加载后尝试加载时,都会引发错误,例如:

Account错误:uncaughtException:编译后无法覆盖模型。日期=2016 年 2 月 26 日星期五 10:13:40 GMT-0700 (MST),pid=19231,uid=502,gid=20,cwd=/Users/me/PhpstormProjects/project,execPath=/usr/local/Cellar/节点/0.12.4/bin/node, 版本=v5.2.0, argv=[/usr/local/Cellar/node/0.12.4/bin/node, /usr/local/Cellar/node/0.12.4/bin /lab], rss=73306112, heapTotal=62168096, heapUsed=29534752, loadavg=[1.6005859375, 1.84716796875, 1.8701171875], uptime=648559 OverwriteModelError: 编译后无法覆盖Account模型。

我很好,但是现在我正在为我的模型编写单元测试,我遇到了一个问题。

只是关于文件结构的一些基本信息......

我将所有 Mongoose 模型放在单独的文件中,位于src/models/文件夹内,要加载这些模型,只需要求文件夹,将Mongoose对象传递给它,src/models/index.js文件将加载所有模型,并返回楷模。该index.js文件可以在这里看到(与它无关,但模型名称基本上是文件名,没有.js

现在,模型的单元测试也被分成单独的文件。每个模型都有一个测试文件。即使每个单元测试文件都关注一个特定的模型,其中一些也使用其他模型(用于之前/之后的任务)。

最初的问题

我刚刚创建了第二个单元测试文件,当我独立执行每个测试文件时,它们工作得很好。但是当我执行所有这些时,我收到上述错误,说明我正在尝试多次加载模型。由于我./models在每个单元测试用例中都需要,因此我不止一次加载它们。

第一次解决尝试

我想也许我可以通过after()在每个单独的单元测试文件中清除所有加载的模型,如下所示:

哪个根本不起作用(没有新错误,但是一旦编译错误仍然存​​在,就无法覆盖Account模型)

第二次解决尝试(半成功)

当模型尝试返回时,模型不会在最后一行抛出错误,而是在模型Mongoose.model()顶部插入一些逻辑,以检查模型是否已加载,如果已加载,则返回模型对象:

我现在正在我的模型中尝试它,它似乎工作正常,(好吧意味着我没有得到上面列出的错误,说我正在多次加载模型)

新问题

现在,每当执行单元测试时,我都会收到一个错误,每个模型都会显示一次错误,但它是相同的错误:

在该堆栈跟踪中没有太多细节可以解决..

我不确定它是否是由我添加到每个模型中的代码引起的,检查它是否已经加载,如果是,它会在我执行单个单元测试时显示,或者它只会显示无法设置属性' 0' 未定义两次(一次用于成功的初始模型加载,然后两次用于接下来的两次......我想)

如果有人有任何意见,我将非常感激!谢谢

更新

我尝试运行lab --debug以获取更多信息,虽然它没有显示出现的错误周围的任何堆栈跟踪,但它使它们加倍......这很奇怪。所以如果执行时有 2 lab,则lab --debug显示 4

另外,我使用Winston进行日志记录。如果我将日志级别更改为调试,这在控制台中显示了很多调试条目,它不会显示这些错误周围的任何条目......所以这让我认为这可能不是由我的脚本引起的,而是由某些东西引起的在单元测试依赖项中?

错误说它们来自error.js文件,但不要说太多。我试图通过 找到一个error.js find . -name 'events.js',但没有结果.. 奇怪

0 投票
1 回答
891 浏览

node.js - 如何使用 Hapi.js Lab 测试框架在控制台上进行调试?

Mocha可以选择使用 运行测试mocha debug,就像node debug允许在REPL控制台中调试一样。

如何使用Hapi LabREPL进行调试?

0 投票
1 回答
565 浏览

node.js - 如何让伊斯坦布尔报告 Lab/Hapi.js 测试的覆盖率?

编辑:几个月后我完全迁移到实验室,它工作得很好,包括覆盖范围。也许在我写这个实验室的时候没有一个好的覆盖工具。

我以前有这个工作。今天早上上班。突然,它不是。

测试在dist/test/unit.js. 15 次测试,覆盖 80.29% 的代码(基于实验室的覆盖率报告)。但是我们已经准备好将伊斯坦布尔与声纳一起使用,所以我需要让它再次与伊斯坦布尔一起使用。无论如何,我更喜欢伊斯坦布尔的报道。

我正在运行测试:

./node_modules/.bin/istanbul cover ./node_modules/.bin/lab -- -l -e development -r lcov dist/test

测试运行。全部通过。屏幕输出是覆盖率报告:

为什么这告诉我没有收集到任何报道?我如何让这两个工具再次很好地配合使用?

摆脱-r lcov并没有真正的帮助。./coverage无论哪种方式,(默认文件夹)中都没有输出。我可以通过管道强制它,但是当我将该输出运行到伊斯坦布尔(报告选项)时,我得到Error: Invalid report format [coverage/cover.info]

似乎正在生成的覆盖率报告无效。我怎么会知道?

0 投票
1 回答
880 浏览

mongodb - server.inject with hapijs not return the correct response

I am trying to use Lab to test some code. However, for some reason when I put the right payload my code does nothing. The promise doesn't seem to get returned:

If I edit the code so that there is no payload or it doesn't match my Joi validation then it I get response:

I should mention that this code works when I run the server and test the api by hand. I can't figure it out.