问题标签 [node.js-tape]

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 投票
1 回答
869 浏览

javascript - 在子堆栈/磁带中使用“计划”与“结束”的目的是什么?

substack 的磁带测试模块允许您使用该方法提前指定断言的数量plan,然后它会自动end为您调用。为什么不把end测试放在最后呢?plan使用, 和 和有什么区别end

0 投票
1 回答
1190 浏览

node.js - 通过 npm test 和 jspm 运行多个测试

我正在使用jspm来管理我项目中的模块。

我想使用磁带和 ES6 语法编写测试。

我希望能够使用npm test.

如果我jspm run test/example.js直接从命令行运行,则测试运行。

如果我添加

package.json然后运行npm test,测试运行。

到目前为止一切顺利,但我想在test目录中有多个测试。jspm run似乎一次只支持一个模块。

如果我替换jspm runbabel-node,我得到Error: Cannot find module 'tape'。这个错误对我来说很有意义,即babel-node不知道在哪里tape,只知道jspm

那么有没有办法说npm test“在这里运行所有这些测试,如果找不到模块,请询问 jspm”?

这是我的示例测试

这是我的目录结构。

这是我的 package.json

0 投票
1 回答
348 浏览

node.js - nodejs 和 TAPE 集成问题。应用程序初始化调用被阻止

我正在使用“磁带”为 nodejs 应用程序创建单元测试。当我运行测试时,该过程被永远阻塞。当我深入挖掘时,我发现如果我运行“nodejs mainapp.js”,这个过程并没有结束。这也阻止了单元测试的运行。

如果有注册的事件,看起来 nodejs 进程不会结束。就我而言,创建 mongo 或 redis 连接或使用节点模块(例如“node-cache”)会导致这种情况。很难想象所有这些模块都可以避免。关于如何解决问题的任何建议。我的测试用例非常简单,所以那里有问题。

顺便说一句,我已经验证了 nodejs 不会因为 http.listen 而被阻止。有人可能会争论使用模型,我不打算这样做。

0 投票
1 回答
3491 浏览

javascript - 断言抛出磁带 - 节点

所以我正在尝试测试一个函数,它是一个客户端函数(未完成),这就是它嵌入到测试本身中的原因(直到我能找到更好的解决方案)。

我遇到的问题是当我测试函数是否抛出 TypeError 时。

我理解问题是因为它正在测试返回值而不是函数本身,我不确定如何解决这个问题。

任何和所有的帮助表示赞赏!

胶带


测试.js

0 投票
1 回答
570 浏览

javascript - 如何使用磁带验证错误消息?

我目前正在学习如何使用 Tape 进行单元测试。我已经能够验证我的测试中是否引发了错误。但是,我们如何验证抛出错误的消息是否等于预期的消息?

示例单元测试:

示例对象:

提前致谢!

0 投票
1 回答
3484 浏览

javascript - 强制完成一个 rxjs 观察者

我有一个 rxjs 观察者(实际上是一个主题),它永远跟踪一个文件,就像 tail -f 一样。例如,监视日志文件非常棒。

这种“永远”的行为对我的应用程序来说很棒,但对测试来说却很糟糕。目前我的应用程序有效,但我的测试永远挂起。

我想强制观察者更改提前完成,因为我的测试代码知道文件中应该有多少行。我该怎么做呢?

我尝试在返回的主题句柄上调用 onCompleted,但此时它基本上被强制转换为观察者,你不能强制它关闭,错误是:

对象#没有方法'onCompleted'

这是源代码:

这是无法弄清楚如何强制永远结束的测试代码(磁带式测试)。注意“非法”行:

0 投票
2 回答
1485 浏览

node.js - 如何使用磁带测试异步抛出错误的函数?

我正在尝试测试这个模块(receiver.js)是否抛出错误:

使用这个测试(test.js):

但是磁带在抛出错误之前运行断言,导致以下错误消息:

有没有解决的办法?

0 投票
1 回答
1463 浏览

javascript - ES6 javascript 测试使用 Tape 和 Nightmare.js

我一直在尝试使用Tape assertions 和Nightmare.js来测试我的 ES6 代码来加载测试页面。我一直在尝试不同的 ES6 方法:async/await、yield、generators,我觉得我有点过头了。我也不确定何时何地不使用babel-tape。我可以通过以下测试,但是在我创建另一个评估块的那一刻,它就会出错。文档相当稀缺(或使用 Mocha)。这里的最佳做法是什么?

附言。我正在使用babel-tape-runner来运行测试。

0 投票
2 回答
834 浏览

javascript - 使用磁带/ES6 单元测试测试 AMD 模块?

我有一个网络应用程序使用:

  • ES5
  • 要求JS
  • 下划线
  • 骨干
  • jQuery

我尝试使用以下方法设置新的单元测试套件:

  • ES6
  • 胶带
  • 通天塔6

我的 AMD 模块 app/util/stringUtil.js:

我在tapeTest.js 中的单元测试:

我的.babelrc:

我用磁带运行测试:

我收到以下错误:

我猜磁带无法识别 AMD 模块?我能以某种方式解决这个问题吗?也许将 AMD 模块转换为 CommonJS 模块之类的?

0 投票
0 回答
340 浏览

node.js - 为什么这个承诺代码永远不会运行?

正如您在下面的 .gif 中看到的,我在集成测试中调用了两次 tape.js,它运行良好。但是第二次运行测试时,在我注释掉将测试数据插入数据库的代码之后,tape.js 函数的主体永远不会运行。

为什么会这样?

在此处输入图像描述

我在我的数据库代码中放置了一个断点,它resolve()在下一次 tape.js 测试运行之前完成并调用,所以我没有得到它。

这是我的测试类,然后是数据库类:

数据库类:

更新 - 在vitally-t的建议之后

新建数据库代码,对问题没有影响: