问题标签 [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.
node.js - 在 Node JS Tape 中使测试独立
我正在尝试在我用 Node JS 编写的脚本中测试函数。我正在使用磁带进行单元测试。但是我面临一个如何使每个测试用例独立的问题。例如。脚本中有一些全局变量。这些变量的值在这些方法中设置。现在,问题是这些变量在不同的单元测试用例之间共享值。有没有办法在任何测试用例运行之前清除所有全局变量?
node.js - 如何在 VS 代码中调试反应磁带单元测试
我正在调试第三方库单元测试。测试用例正在使用tape 和tape-run 运行。它使用下面的命令来运行测试用例。
我想在 vscode 中放置断点来调试特定的测试文件。我是否需要使用 node debug 以及上述命令在 vs 代码中放置断点?
javascript - 如何在没有错误的情况下测试 React 路由器?
我已经使用 React 和 React 路由器实现了一个包含路由的 App 组件:
该应用程序本身呈现并正常运行,因为我可以转到我的浏览器并按预期查看所有内容。
当我尝试实现正确的测试时出现问题,该测试在没有浏览器的 Node.js 中运行:
我曾经MemoryRouter
按照React 文档中的说明包装我的应用程序以避免错误,但是无论有没有它,在控制台中运行测试时我都会遇到同样的错误:
不变违规:浏览器历史记录需要一个 DOM
我的猜测是我无法BrowserRouter
在浏览器外运行组件,但我不明白测试它的正确方法是什么,因为我不想强迫自己操纵代码以适应测试环境缺点。
我已经在网上搜索并研究了类似的问题,但我找不到答案,而且这些文档几乎没有提供任何有用的信息来处理这个问题。
任何帮助将不胜感激。谢谢!
reactjs - React Native Babel Tape SyntaxError Invalid or unexpected token with PNG files
我正在使用 React Native 编写一个应用程序,我想用 Tape 和 JSX 语法测试应用程序组件,所以我认为“babel”是必须的。
但是,当我运行时tape -r babel-register tests/**/*.js
,我收到了一个臭名昭著SyntaxError
的 PNG 文件。
打算在询问之前先搜索一下,我发现了很多关于 ReactJS(关于 Webpack 问题)和 Jest 的解决方案(通过设置jest
in package.json
)。
.babelrc
请随时评论我可以添加到这个问题的日志/版本/配置文件!谢谢。
javascript - Node js 中的单元测试
我正在使用 Tape.js 在节点 js 中学习单元测试,到目前为止,我只发现测试一个函数返回的结果很有用,但是如果一个回调被准确地调用了 n 次呢?
我有这个函数调用回调函数 n 次:
和磁带测试:
我得到了错误:not ok 1 plan != count
如何在测试中更新计数以匹配已调用的次数?
谢谢
node.js - nodejs - 如何检查使用单元测试测试的代码部分?
我正在使用tape
并istanbul
在我的 Node.js 项目中编写单元测试,结果如下:
有没有办法找出哪些语句、函数或代码部分未经测试?
javascript - 使用异步 forEach 循环磁带“测试退出而没有结束”错误
我在做什么
编辑:我用我的问题的简化版本创建了一个repo,重现了这个问题。
我正在尝试使用browserstack、selenium-webdriver和tape设置自动化前端测试。
这个想法是定义多个浏览器和设备,它们必须通过 X 数量的给定测试一个接一个地进行测试。在下面的示例中,我在 OSX 上只定义了一个测试和两个浏览器。
为了只定义一次浏览器并处理测试,我创建了一个存储库test-runner
,该存储库应该添加dev-dependency
到需要在给定设备和浏览器上测试的存储库中。获得所有需要的test-runner
测试通过,启动第一个浏览器,在该浏览器上运行测试,一旦所有测试完成,浏览器就会关闭quit()
,下一个浏览器会重新启动并再次测试。
测试运行器
/index.js
如果你想知道这个asyncForEach
功能是如何工作的,我是从这里得到的。
我的回购
/test/front/index.js
/test/front/test.js
/package.json
当我想运行我npm run test
在 my-repo 中执行的测试时
请记住,我们只有一个测试(但也可以是多个测试)并定义了两个浏览器,因此行为应该是:
- 启动浏览器 1 并导航(Chrome)
- 在浏览器 1 (Chrome) 上进行一项测试
- 关闭浏览器 1 (Chrome)
- 启动浏览器 2 并导航 (Safari)
- 在浏览器 2 (Safari) 上进行一项测试
- 关闭浏览器 2 (Safari)
- 完毕
问题
异步的东西似乎工作得很好,浏览器按预期一个接一个地启动。问题是,即使我打电话,第一个测试也没有完成,t.end()
而且我没有进行第二个测试(在 4 之后失败。)。
我试过的
我尝试使用t.pass()
并运行 CLI,NODE_ENV=development tape test/front/ | tap-spec
但没有帮助。我还注意到,当我没有resolve()
参加test.js
考试时,结果很好,但当然我没有参加下一个考试。
我还尝试像解决这个问题一样调整我的代码,但没有设法让它工作。
同时,我还在磁带 github 页面上打开了一个问题。
所以我希望这个问题阅读起来不会太痛苦,任何帮助都将不胜感激。
node.js - 如何使用 Tape 测试异步函数抛出错误?
我正在尝试测试一个使用 Tape 调用 API 的异步函数,但我似乎运气不佳。我以前用过 Mocha/Chai 和 Jasmine,但我不知道如何在这里做我想做的事。
这是我要测试的功能
它依赖于两个抛出 APIErrors 的辅助函数(我自己的错误类型)
我已经尝试过这个磁带测试,但它都失败了并且没有发现错误
我尝试将其更改为async
但没有帮助。
显然我在这里迷路了。任何线索或答案将不胜感激!
javascript - 需要解释这种特殊的古怪异步行为
我对一个适用于 canvas 元素的 javascript 库进行了 e2e 测试。它是这样组织的:有一个带有链接列表、画布和图像元素的 html 页面。当我单击一个链接时,该库会在画布上绘制一个特定的测试用例并加载具有预期视图的图像。此外,我还有一个 node.js 脚本,可以使用 webdriverio、relikejs(用于比较图像的库)和磁带(测试框架)自动执行这些操作。
现在这个古怪的部分(下面的示例按预期工作,测试失败,如果图像与画布不同等),我获取所有链接,将图像和画布与likejs进行比较,并存储数据(这是结果数组中的similarjs比较),然后我运行另一个循环,在其中调用磁带并测试内容:
但是,如果我尝试使用单个循环,就像这里:
脚本以这种方式执行:
- LOOP START 1 //页面上的动作开始,然后进行比较并返回结果
- LOOP END 1 //磁带被调用,将回调放在某处并返回
- LOOP START 2 //页面上的操作开始(请求已发送到 webriver),这为 node.js 脚本创造了空闲时间,因此磁带第一次调用的回调有机会运行
- 测试开始 1
- 测试结束 1
- 循环结束 2
- LOOP START 3 //由于某种原因,页面上的操作不再允许之前的测试运行,就像在 LOOP START 2 上一样
- 循环结束 3
- 循环开始 4
- 循环结束 4
- 等等
并且除测试 1 之外的所有测试都失败并显示以下消息:not ok TEST_NUM test exited without ending
。显然,node.js 脚本在没有运行磁带回调的情况下退出(第一个除外)。
我明白,磁带不会立即运行测试,它接受一个回调,稍后运行,但让我感到困惑的是:脚本退出了,什么时候还有回调要运行?
非常感谢任何提示
目前,我怀疑这是磁带库的错误或其他问题。这就是正在发生的事情(我能够研究):tape 接受回调,运行第一个,报告结果,但随后不运行剩余的回调,但即使没有尝试调用它们,也会将它们报告为“失败” .