问题标签 [nodeunit]

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 回答
253 浏览

javascript - 快速单元测试,在服务器上调用 close 会导致“未定义调用”

我正在尝试测试基于 express 的 node.js 应用程序。我想返回一个简单的 404.html,我可以成功地做到这一点,但是之后,在节点 http 服务器上调用 close 会得到这个错误:

我很难追查到底是什么,undefined因为在其他地方调用相同的方法时效果很好。

这是我的快速代码:

这是我的nodeunit测试代码:

http get 请求的结果回来了,失败只在我调用时发生,server.stop(test.done);但是需要停止服务器以确保我的单元测试可以按任何顺序独立运行。

0 投票
1 回答
1002 浏览

node.js - express.js 没有在 nodeunit 测试中保存会话数据

底部更新!

我的 node.js 服务器使用 express.js 来管理会话。登录后,我将一些用户信息存储在 req.session 中。我有一个注销端点,它只是在发送响应之前从 req.session 中删除用户数据。

对于用户发出的每个请求,我使用身份验证中间件来确保会话中仍有用户数据,因此删除会话对象中的用户数据应该会导致任何后续身份验证失败。

为了测试我的服务器,我有一个 nodeunit 测试,它登录、调用一些端点、注销,然后尝试调用另一个端点。我希望最后一个端点在身份验证中失败,因为我之前泄露了用户数据。相反,当我拨打最后一个电话时,我的用户数据仍然存在。就好像删除它的注销调用没有写回会话存储一样。

这是我的 app.js:

auth.js:

account.js:注销:

单元测试:

当测试运行时,执行成功通过注销,然后authenticateSession调用到/account,此时req.session.user仍然存在!为什么!?

  • 我的 cookie 商店是否给了我过时的数据?
  • 有没有办法强制 express 手动保存我的会话数据,或者我只是修改 req.session 对象并相信它会保存它?

更新:

看起来这个问题与围绕 cookie 的应用中间件直接相关。当我使用app.use(express.session())而不是app.use(express.cookieSession(...)),会话数据被正确地吹走并且我的测试通过了。

0 投票
1 回答
414 浏览

node.js - node.js 的单元测试

我研究了为用 node.js 开发的应用程序编写单元测试的各种框架。Mocha 中存在多个选项,例如:nodeunit、jasmine-node、should.js 库。一切似乎都能够测试一切。我找不到上述任何选项的任何限制。

我更喜欢使用 nodeunit,因为它看起来很容易作为初学者使用。在我开始研究之前,任何关于 nodeunit 限制的建议都会非常有帮助。或者如果有人认为在 node.js 中存在更简单和更好的单元测试选项,请提供任何建议。

0 投票
4 回答
2026 浏览

node.js - Nodeunit 没有检测到 done()

试图加快使用 node.js 和 nodeunit 的速度,但发现 nodeunit 存在问题,test.done()在其中一个测试中没有看到调用。

编码:

输出:

我希望这是愚蠢的。

版本:-

0 投票
1 回答
301 浏览

javascript - 使用 nodeunit 使用 DB 连接/驱动程序编写单元测试

我正在尝试使用nodeunit为我的简单数据库层SimpleDbLayer 编写一组测试单元。我发现它相当困难。

问题:

1)我想连接到数据库一次,并使用该连接。我不能真正使用 setUp 和 tearDown,因为它们在每次测试之前和之后运行。作为“解决方案”,我使用模块范围的变量作为范围(参见下面的代码)

2)我的简单数据库层有几个数据库驱动程序。MongoMixin 只是其中之一——我正在开发 MariaMixin 和 PostgresMixin。理想情况下,我会为每个驱动程序运行这些测试,看看它们是否有效。有没有一个好的,简单的方法来做到这一点?

3)我遇到了我的测试代码出错的情况,我得到的只是关于 test.done 没有被检测到的投诉。这里有什么我需要注意的诡计吗?

4)我做错了什么可怕的事情吗?(见代码)

0 投票
1 回答
84 浏览

node.js - 使用 nodeunit 中止测试

我正在为数据库驱动程序编写单元测试。在第一个测试中,我创建了一些我打算稍后在测试中使用的对象。我想编写测试,以便如果这个(关键)步骤失败,其他一切都会停止。我这样做了,但感觉有点太老套了……在这种情况下,最佳做法是什么?

0 投票
1 回答
897 浏览

node.js - Nodeunit:测试函数中的运行时/抛出错误是_silent_

使用 NodeUnit 的要点之一是编写新函数并经常对其进行测试。问题是,如果其中一个测试函数抛出错误(包括 JS 运行时错误),则错误不会显示给用户。这是最简单的测试用例:(注意 abcd 会导致运行时错误)

但是,testMe() 可能是我正在开发的一个新功能。一个未初始化的变量,或者任何东西,都会沉默。

0 投票
2 回答
2566 浏览

javascript - npm install 找不到新版本

我只是想在 Mac 上执行 sudo npm install ,具有以下依赖项:

但 npm 一直告诉我:

当我确定我想要的版本存在时,uglify 也会发生同样的事情,并且我在 Windows 上的朋友能够使用相同的 package.json 进行安装就好了

我担心我的版本,所以我安装了最新版本的 node 和 npm,然后运行 ​​sudo npm update npm -g,没有解决问题

以及来自调试日志的更多内容

0 投票
1 回答
4843 浏览

node.js - 如何测试 Grunt 任务?理解和最佳实践

我有点难以理解如何编写复杂的代码Gruntfile.js并将其用于测试。我是否以正确的方式使用 Grunt?我想向社区寻求帮助并以其他方式做出贡献。

我正在为 Grunt 编写一个新任务,并希望在 Github 和 npm 上向广大受众推广。我想为这个任务进行自动化测试(我想学习如何正确地完成它!)。

我想测试不同的选项组合(现在大约 15 个)。所以,我应该多次:

  • 运行清理
  • 使用下一个选项集运行我的任务
  • 运行测试并将选项对象传递给测试

为了更好地理解一些非工作代码:

咕噜文件:

我知道在给定对象时如何检查tmp/文件夹是否处于所需状态options

问题是把东西放在一起。

我只要求模板代码作为答案,npo 需要放置工作示例。

PS:你可以提出另一个测试工具,nodeunit不是必须的。

PPS:废话,我现在可以用普通的 javascript 写这个了!也许我做错了,我想把 Grunt 放到单元测试中?但我想通过 Grunt 传递的不同选项来测试我的任务在真实环境中的工作方式......

0 投票
1 回答
569 浏览

node.js - 在节点 js 中使用假会话测试路由

我正在为我的服务器使用节点 js + express。我正在用 superagent + 节点单元编写测试,我的路由需要会话来访问它,我可以伪造这个会话来测试我的路由/控制器吗?(可能是superagent没有这个功能,建议换个工具)