问题标签 [vows]

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

javascript - 在誓言文件中使用 require.config

我正在尝试像在 index.html 文档中设置的那样设置 require ,这样就不会有任何问题......出于某种原因,vowsjs 抱怨 require.config ......

也许它使用的是旧的 requirejs 版本?誓言 0.7.0

0 投票
2 回答
351 浏览

javascript - 如何为异步递归操作编写 vows js bdd 测试

代码.js

测试.js

在 node.js 上运行

我得到未触发的错误回调。

如果我能够放置这个脚本,我的理解是在我的函数返回之前: callback(computeValue);这应该可以工作恕我直言。如果我错了,请纠正我。但是,我不明白我可以在哪里插入这个。谢谢你的时间!

0 投票
1 回答
76 浏览

node.js - 我怎样才能让誓言等待 60 秒才能发生回调

我编写了一些连接到 FTP 服务器的代码并列出了一个很长的目录。可能需要 40 多秒才能得到响应。

我已经编写了一些代码来开始测试它,但我得到 Errored >> 回调未触发。

有没有办法指示 Vows 或 Node 稍微冷静一下,然后等待回调触发,比如说,直到某个可配置的时间量?

这是我的誓言代码:vows.describe('FTP Downloader Suite').addBatch({ 'FTP Downloader' : { topic: function() { var promise = new(events.EventEmitter);

谢谢!

0 投票
0 回答
341 浏览

sails.js - 使用 Vowsjs 的 Sailsjs 水线模型的 TDD

我的问题是尝试对 Waterline 模型进行 TDD。我提供的测试只是构建我的套件的样板。然而,它们提出了有效的问题。主要问题是我需要 Vows.js 测试中的模型。在测试范围内定义了模型,但它没有从 Waterline 包继承的任何属性。例如,这里是“EducationLevel”的一些模型代码:

这里有一些试验测试:

当我运行测试时,第一个断言通过了,但第二个没有:

这表明测试只知道 EducationLevel 定义中明确声明的内容。定义了“迁移”属性是因为我在代码中明确定义了它。它不知道 Waterline 方法“创建”。我怎样才能以使传统 TDD 实用的方式来解决这个问题?

0 投票
1 回答
210 浏览

node.js - 如何调试挂起的 api-easy(或 vows)测试?

我正在使用api-easy来实现 REST api 的端到端测试。该库本身非常好,但调试失败的测试比我预期的要难,但也许我没有使用正确的方法。

我遇到了这个问题:测试向服务器发送了一个“GET”,由于内存不足,该服务器当前无响应。该请求永远被阻止,但我在输出中看不到它,因为只打印成功或失败的测试。

是否可以将所有请求转储到标准输出?超时选项还可以帮助中止阻塞测试(并使它们失败)。

我目前的方法是修补api-easy.js文件以将请求转储到控制台:

输出包含标头、uri 和方法:

这不是一个很好的解决方案,因为我正在修补node_modules目录的内容。


Api-easy 内部使用vows来控制其数据流。我还使用誓言(直接或使用 grunt-vows)运行测试。我已经启用了详细模式 ( vows -v --spec),但不足以分析阻塞任务。我只能看到成功或失败的测试。

0 投票
1 回答
337 浏览

javascript - V8 延迟生成堆栈跟踪似乎导致 vows 库中的无限循环

我花了一些时间在 NodeJS 测试套件中调试一个奇怪的无限循环问题。它只在极少数情况下发生,但我可以在附加到 chrome 调试器时重现它。

我认为这与 V8 对异常堆栈跟踪的处理以及vows 库对对象所做的扩展有关AssertionError(vows 添加了一个toString方法)。我也有可能会误会,所以想问问我对V8实现的理解是否正确。

这是重现错误的最小示例:

现在程序以无限循环结束:当在第 83 行的正则表达式中访问toString时,该方法(由 vows 库添加)被一次又一次地调用。this.stack

当我this在调试器中检查时,它显示它是 anAssertionError但它的stack属性是undefined. 但是,当我将鼠标悬停在它上面时,它会显示实际的堆栈跟踪。

我认为这种现象是由 V8 的惰性优化引起的。它仅按需计算堆栈跟踪。这样做,它干扰了toString誓言的附加方法。该toString方法再次访问堆栈跟踪 ( this.stack),因此循环继续。

这个结论正确吗?如果是这样,有没有办法修补誓言代码,所以它可以与 V8 一起使用(或者我至少可以将它报告为誓言项目中的错误)?

我在 Ubuntu 下使用节点 v0.10.28。

更新:没有誓言的简化示例

这是一个简化版本。它不再依赖于誓言,而是我只复制了其toString扩展的相关部分:

在调试模式下,递归发生在if语句中。

更新:使用 ReferenceError 的更简单的版本

(我还创建了一个jsfiddle示例,但我无法在那里重现无限循环,只能使用节点。)

0 投票
1 回答
18 浏览

unit-testing - 在为 grunt 插件编写一些测试时,如何动态更改 grunt.tasks(...) 使用的配置

我写了一个 grunt 插件。在我用誓言编写的测试中,我想在调用之前更改我的 gruntfile 中定义的一些配置对象

目标是使用不同的配置多次执行我在 gruntfile 中定义的一些任务。

我不能使用经典的 nodeunit 方法,因为我要更改的配置不是我的任务的配置。另外,我在 nodeunit 启动 grunt 任务时遇到了一些问题。

我有这样的事情:

似乎没有真正的解决方案可以从 API 中驱动 grunt,因为它是一个命令行工具。尽管如此,还是有两种 API 方法可以提供帮助:grunt.util.spawn 和 grunt.tasks

两者似乎都是在调用时读取 gruntfile 的黑匣子。

如果我尝试第一次调用 grunt.tasks() 来预加载配置,我可以更改我的对象,但第二次调用 grunt.tasks() 似乎完全重新加载了 gruntfile 并且不使用以前的配置。

有人对实现该目标的这种或其他方式有一些见解吗?

谢谢。

0 投票
2 回答
565 浏览

node.js - 使用 Nodejs Vows (BDD) 测试 Bluebird Promise

我在如何使用 Vows 为我的 Promise-returning API 正确构建测试时遇到问题,例如

我的誓言永不落空。这是我第一次尝试使用 vows 来测试 Promise。希望熟悉这方面的人伸出援助之手。

提前谢谢你。

恩里克

0 投票
1 回答
138 浏览

node.js - Output data from Vows test

I have a test file like below:

Somewhere this crashes, and I want to output some data. I tried to do console.log and process.stdout.write(...). Both don't work as I expected.

I run the test using npm test, having vows --spec --isolate in my package.json file.

So, how can I output data when using Vows tests?

0 投票
1 回答
70 浏览

node.js - 在节点中重用 MongoDB 连接

这是我得到的错误:[Error: db object already connecting, open cannot be called multiple times]。我在这个誓言测试中有一个全局 mongo 对象。

当我第二次尝试打开它时,我得到了这个错误。

所以即使我db.close()第一次使用它似乎也没有关闭。是否有另一种方法可以重新使用连接?