问题标签 [chai]

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 投票
5 回答
4875 浏览

node.js - node.js 的断言库?

node.js assert 为单元测试提供的断言非常有限。甚至在我编写第一个测试之前,我就已经创建了一些断言,因为很明显我将继续重复使用它们。

你能推荐一些好的断言库来测试常见的 javascript 情况(对象结构、对象类等)吗?

理想情况下,它应该与 nodeunit 很好地集成(或者更好地扩展它的断言)——我的断言没有,我必须将它们test作为额外的变量传递......

我见过的唯一一个是。你能说什么呢?

0 投票
7 回答
130874 浏览

javascript - 如何检查两个对象是否具有相同的一组属性名称?

我在我的应用程序中使用 node、mocha 和 chai。我想测试我返回的结果数据属性是否与我的模型对象之一相同的“对象类型”(非常类似于 chai 的实例)。我只是想确认这两个对象具有相同的属性名称集。我对属性的实际值特别不感兴趣。

假设我有下面的模型 Person 。我想检查我的 results.data 是否具有与预期模型相同的所有属性。所以在这种情况下,Person 有一个名字和姓氏。

因此,如果results.data.lastName两者results.data.firstName都存在,那么它应该返回 true。如果其中任何一个都不存在,它应该返回 false。如果 results.data 有任何额外的属性,比如 results.data.surname,那么它会返回 false,因为 Person 中不存在 surname。

该型号

0 投票
1 回答
490 浏览

javascript - 浏览器中的 Mocha 和 Chai 异步测试

我无法使用 mocha 运行异步测试。

这是我的代码

两个日志都显示,但从不调用 done()。

0 投票
3 回答
113535 浏览

javascript - 测试 Mocha 中抛出的错误

我希望能在这个问题上找到一些帮助。我正在尝试为我正在编写的应用程序编写测试。我已将问题提炼为以下示例代码。我想测试是否引发了错误。我使用 Testacular 作为测试运行程序,以 mocha 作为框架,chai 作为断言库。测试运行,但测试失败,因为抛出了错误!任何帮助是极大的赞赏!

0 投票
2 回答
5400 浏览

javascript - 如何使用 Mocha 测试 Promise

我正在使用 Mocha 来测试一个返回承诺的异步函数。

测试承诺解析为正确值的最佳方法是什么?

0 投票
5 回答
29776 浏览

javascript - Chai.js:对象包含/包含

include办法。我想测试一个对象是否包含另一个对象。例如:

我想用 Chai 来测试这个对象是否包含以下内容(确实如此)

这样做似乎不起作用:

0 投票
1 回答
1119 浏览

javascript - 具有相对路径的 jsdom 和 script 标签

我在这里有一些像这样的单页演示:http: //notjs.org/examples/forms/formmode_demo.html

我想,哇,如果可以在我现有的 mocha chai badness 设置中编写一些测试来直接测试示例,那就太棒了:

如果我能做到这一点,那么我将永远不会遭受那种“你的示例 x 几个月前停止工作”的尴尬时刻。

我让它工作,但只能使用来自 http:// urls 的页面中的脚本标签。如果我必须在测试之前将包部署到服务器,那么测试的效果就不那么好了。

示例页面加载 jquery、underscore 和 notjs 并且需要以作为独立演示运行。它还应该能够从本地文件系统运行,并且可以使用相对 url。我最初让页面上的 notjs 脚本标签指向一个相对路径,例如

代替

但是然后 notjs.basics.js 永远不会加载(window.Notjs == undefined 在测试中)并且我没有看到来自 jsdom 的任何错误。我尝试设置 documentRoot jsdom 选项,但这似乎不起作用。

作为参考,loadExample 方法和我的 jsdom 设置的其余部分在这里: https ://github.com/bee-hub/notjs/blob/master/test/testHelper.coffee

感谢您的任何帮助和建议。

0 投票
1 回答
1316 浏览

node.js - Zombie.js 多次访问的“断言未定义”?

我正在使用 Zombie.js 和 Mocha 设置集成测试,并遇到了一个令人费解的问题,即只有第一次browser.visit()调用似乎成功。我的规格如下所示:

一个加载的测试顺利/docs/app.html通过。但是,所有后续测试都失败了,产生如下的堆栈跟踪:

Zombie 是否browser.visit()不打算被多次调用,还是这里有其他问题?

编辑注释版本:

  • Node.js v0.10.1
  • 摩卡 v1.8.1
  • 柴 v1.5.0
  • 僵尸.js v1.4.1
0 投票
1 回答
5482 浏览

javascript - 在 Mocha 测试中找不到 Chai 导出

我创建了简单的摩卡测试。当使用 Node “assert” 模块时,它可以完美运行。我从命令行运行它(Mocha 作为全局节点模块安装):

脚本如下所示:

好吧,我尝试添加 Chai 而不是断言库。我先安装了它:

所以,我的项目中已经创建了 node_modules 目录。到目前为止很棒。然后,我修改了脚本以使用 Chai:

它不起作用,Mocha 测试失败并出现 TypeError:

我认为 Chai 没有定义应该所以它是未定义的。

这怎么可能?

我怎样才能让我的测试用 Chai 运行?我试图在全球范围内安装 Chai,但没有任何效果。我也运行了脚本,-r chai但没有任何效果。

显然,Chai 模块已加载,但未定义变量(Object.prototype 属性)。我怎样才能解决这个问题?

0 投票
3 回答
8347 浏览

javascript - 如何使用 Chai 检查值是否在对象中?

是否可以使用 Chai 断言库测试该值是否包含在某个数组中?

例子:

我需要做这样的事情(但是它不起作用):

我该如何测试呢?