问题标签 [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 投票
2 回答
1539 浏览

javascript - Socket.io 和 mocha 测试

我正在使用 Mocha 和 chai 对我编写的一个小应用程序进行客户端测试。但是,我遇到了一个问题,即使我知道我的套接字已连接,mocha 报告它不是。我环顾四周,似乎找不到满足我需求的东西。这是我用于测试的代码。

0 投票
1 回答
380 浏览

javascript - 使用 Mocha 和 chai 时,什么时候用函数包裹期望?

对于抛出异常的代码,我需要将期望包装在一个匿名函数中。否则在 Mocha 捕捉到它之前会抛出异常。请参阅此 StackOverflow答案

但是包装似乎有副作用。
以下代码在包装时表现不同。这似乎是一个柴问题。

我手工制作的 Javascript 版本:

失败看起来像这样:
AssertionError: expected [Function] to have a property 'name' of 'kalle', but got ''

为什么包装会产生不同的结果?
提前致谢!

0 投票
1 回答
380 浏览

javascript - Mocha Chai 测试奇怪的关闭行为

有谁知道闭包在 Mocha + Chai 测试中是如何工作的?我不确定测试运行器(在这种情况下为 phantom-js)是否搞砸了,但这没有任何意义。看起来在每个 it 功能块中创建的 var 会相互冲突。

基本上一个游戏只能有 10 名玩家,但在每次测试中,游戏变量已经有 10 名玩家。很混乱。

0 投票
1 回答
4833 浏览

selenium - Chai-As-Promised 正在吃断言错误

我正在使用chai-as-promised + mocha来编写一些selenium-webdriver测试。由于 webdriver 广泛使用promises,我想如果我对这些类型的测试使用 chai-as-promised 会更好。

问题是,当测试失败时,mocha 没有正确捕获错误,它只是失败而没有输出任何东西。

示例代码:

根据记录的行为,当期望失败时, chai-as-promised应该将错误传递给 mocha。正确的?

作为一种变体,

我也试过这些,但无济于事:

#2

#3

#4

0 投票
1 回答
1529 浏览

unit-testing - Chai.js 未指定测试中哪个断言失败

我正在使用 mocha 和 chai.js 进行 CoffeeScript 单元测试。我有一个繁重的任务将咖啡文件编译到测试文件夹并启动 PhantomJS 来运行 mocha 测试。

一切正常,但是 chai.js 仅指示哪些测试失败以及预期值和实际值是什么,它没有指定测试用例中未通过的断言。有没有什么好的方法可以打印断言或至少是失败的断言的索引?然而,我也打开了chai.Assertion.includeStack它,它只显示 JavaScript 文件中的行号,这对 CoffeeScript 测试没有太大帮助。

FizzBu​​zzTest.coffee

执行测试

问题: 有没有一种好方法可以将 chai.js 设置为更具体地说明 AssertionError 发生的位置?

喜欢:AssertionError: 预期 true 为 false行中 expect(arr[3]).to.equal("3")

谢谢你。

0 投票
2 回答
782 浏览

javascript - 在 chaijs 中对 expect.throw 进行单元测试很麻烦

我正在使用 chaijs 和 mochajs 进行单元测试。这是 chaijs 的文档。http://chaijs.com/api/bdd/

根据文档,它可以检查函数是否抛出异常。因此,使用此代码:

测试应该说“通过”吧?它期待一个错误,而函数 fn 正在给出它。但我得到了这个:

我很确定我在做一些愚蠢的事情,或者忘记了一些愚蠢的事情,我还没有注意到。

谁能看到我看不到的东西?或任何线索?谢谢。

顺便说一句,我正在使用 node.js v0.10.22。

0 投票
1 回答
17512 浏览

node.js - 使用 Sinon-Chai 时测试失败显示“错误:超过 2000 毫秒的超时”

我有以下路线(快递),我正在为其编写集成测试。

这是代码:

我想测试所有组件是否一起工作,但使用虚假的 HTTP 响应,所以我正在为请求/http 交互创建一个存根。

我使用 Chai、Sinon 和 Sinon-Chai 和 Mocha 作为测试运行器。

这是测试代码:

如果写入响应(response.write)的参数匹配,则测试通过。问题是,当测试失败时,失败消息是:

“错误:超过 2000 毫秒的超时”

我已经引用了这个答案,但它并没有解决问题。

我怎样才能让这个代码显示正确的测试名称和失败的原因?

注意第二个问题可能是,响应对象的断言方式是否可以改进?

0 投票
3 回答
65755 浏览

javascript - Chai 中的“assert”、“expect”和“should”有什么区别?

assert,expect和 和有什么区别should?什么时候用什么?

0 投票
0 回答
593 浏览

javascript - WebDriver / Sauce Labs / Chai / chai-as-promise 文档?

我有一个与 Sauce Labs、WebDriver 一起使用的场景测试设置,我包括 chai 和 chai-as-promise 库。我一直在从示例中提取点点滴滴,并且已经达到:

但我不确定从这里去哪里。https://github.com/admc/wd上的自述文件对这些概念有很好的概述和描述。我可以梳理像https://github.com/admc/wd/blob/master/lib/commands.js这样的源文件来获得一些想法。但我真正需要的是一些包含所有可用功能列表的文档。一些做常见测试的教程会很好。

本质上,是否有任何有用的资源可以让我去这里?

谢谢。

编辑:

例如,一些简单的事情,检查 dom 中列表的长度:

给了我错误:

AssertionError: expected { Object (value, browser) } to have a property 'length'

我在这里想念什么?

0 投票
1 回答
937 浏览

node.js - 在使用 Mocha 和 Chai 断言测试 NodeJS 代码时,我怎么能期望从回调中抛出异常?

我正在使用 Mocha 和 Chai 期望断言来测试我的 NodeJS 应用程序。我可以写一个这样的测试,它工作得很好:

但是如果fn必须首先调用一个接受回调的函数,并且可能会根据结果抛出一个错误呢?例如,如果它命中数据库并可能根据结果抛出异常?这不起作用:

调用 done 时测试结束,但尚未引发异常,因此测试失败。我怎样才能使这个测试通过?

编辑:根据彼得的回答,这不是正确的方法。这可以用类似于以下的样式更好地表达:

感谢大家的帮助!这将有助于我正在做的很多事情。