问题标签 [chai-as-promised]

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

webpack - Uncaught ReferenceError: require is not defined 业力和 webpack

所以我只是试图将 chai-as-promised 与 karma 和 webpack 一起使用,这就是我得到的。 在此处输入图像描述 我已经安装了 chai-as-promised、karma-chai-as-promised、sinon-chai、karma-sinon-chai、karma-webpack,所以我应该很好,但它在这里不起作用是我的 karma.config 文件

0 投票
2 回答
627 浏览

protractor - 如何在 Chai Protractor Promise 中处理布尔值

我试图验证 chai 承诺中的布尔值,如下所示,

但我收到以下错误:

谁能帮助我如何使用 chai promise 验证布尔值。

0 投票
2 回答
3831 浏览

javascript - 如何使用rejectWith 来执行错误消息的完全匹配?

我最近拿起了 JS 单元测试库 Mocha、Chai 和 Chai-As-Promise。但是,我遇到了一种情况,我不确定这是默认行为还是我错过了。

当我断言从承诺中拒绝的错误消息时,似乎只要预期的错误消息是实际错误消息的子字符串,它的断言就会通过。下面是一个例子:

这是默认行为吗?如果是,是否有强制错误消息完全匹配的选项?

mocha@3.4.2 chai@4.0.2 chai-as-promised@7.1.1 q@1.5.0

非常感谢。

0 投票
13 回答
52067 浏览

node.js - 使用 Mocha / Chai 和 async/await 验证是否引发了异常

我正在努力寻找在使用 async/await 时验证承诺在 Mocha 测试中被拒绝的最佳方法。

这是一个有效的示例,但我不喜欢它should.be.rejectedWith返回一个需要从测试函数返回才能正确评估的承诺。使用 async/await 消除了对测试值的这种要求(就像我对下面的结果所做的wins()那样),我觉得我很可能会在某些时候忘记 return 语句,在这种情况下测试总是会通过。

感觉应该可以使用 async/await 将拒绝转换为异常并将其与 Chai 的 should.throw 相结合的事实,但我无法确定正确的语法。

理想情况下,这会起作用,但似乎不起作用:

0 投票
1 回答
488 浏览

angular - Chai 正如承诺的那样,最终在针对 Angular 应用程序的 Protractor e2e 测试中等待的时间不够长

我正在为我最新的 Angular 4 应用程序使用 Protractor 和 Chai-as-promised。我现在只有 2 个 e2e 测试。一个登录现有用户,另一个注册新用户。如果注册成功,我的注册逻辑也会登录新创建的用户。

这是html代码:

这是 e2e 测试代码:

如您所见,两个测试非常相似。但是,signup/logout失败了expect(element(by.id('logoutLink')).isPresent()).to.eventually.be.true;,这也存在于login/logout测试中,它成功了。

我错过了什么?感觉根本不用等。但它适用于login/logout(意味着测试成功)。

对 API 的登录和注册请求都需要大约 200 毫秒才能完成。需要注意的是,当用户提交注册表单时,它会首先触发对 api 的注册请求,如果成功,则会触发登录请求。所以大约需要 400 毫秒才能完成。我猜,这超出了eventually轮询/等待的范围。

编辑:expect(...).to.eventually上面的代码中缺少一些,我已修复。作为仅供参考,这是断言失败:

感觉就像是在元素实际出现在 dom 中并且断言失败之前,promise 解决了。而不是再次轮询它,直到它为真或超时。

编辑#2:刚刚尝试了完全相同的代码,但是在执行最后两行之前等待了 5 秒,它成功通过了......

因此,绝对expect(element(by.id('logoutLink')).isPresent()).to.eventually.be.true;承诺解决快速错误并通过测试。我该如何解决?

任何帮助将不胜感激。

0 投票
2 回答
1603 浏览

javascript - 在多个属性对象上按承诺检查 chai

您好,我有一个方法可以将数据与 URL 一起返回,因此返回对象具有 url 和 body 作为两个属性。

我应该如何在 Chai 中测试这个 - 正如所承诺的那样

它适用于 1 个属性。

如果我包含其他属性,它会在以前的属性中搜索。

AssertionError:预期“ http://www.jsondiff.com/ ”具有属性“body”

我哪里错了?

0 投票
0 回答
44 浏览

chai - chai 作为 promise 调用函数一次

我怎么能用 chai-as-promised 做到这一点:

目前我正在使用柴期望:

对于 chai-as-promisied,我可以拨打多个电话,但我想拨打一次:


解决方案:

0 投票
1 回答
216 浏览

es6-promise - 柴如承诺的测试拒绝超时

我应该如何测试拒绝:

在我的测试中:

它应该被拒绝错误“无效密码”,但我得到错误:

0 投票
1 回答
618 浏览

mocha.js - Sinon 检查是否使用 promise 调用了对象的其他方法

我有一个令人困惑的不工作测试,我无法以某种方式解决(我来自 Java 背景,所以如果我的术语中有一些错误,我很抱歉)。

有一个Trigger具有一些公共功能的对象类,foo()并且bar(). 逻辑是:

可以foo()直接调用另一个对象,或者如果bar()被调用(使用数组),则Trigger.bar()调用Trigger.foo() array.length次。

触发器是用 bluebird Promises 实现的。这是 Trigger 的基本摘录(我删除了一些逻辑,这似乎有点多余,但实际上发生的更多):

所以可以看到,它bar()调用foo()了 members 数组中的每个成员

我想编写一个测试,在其中监视触发器对象并检查它是否调用了foo()n 次。

所以我目前所做的(更改了函数名称)我只是在检查它是否被调用:

由于 Trigger 的承诺,这显然不起作用,因此告诉我:

AssertionError: expected foo to have been called at least once, but it was never called

但是无论我如何尝试在then() 块中解决这个问题bar(),它总是声称我的间谍没有被调用。

我已经做了一些日志记录,并且确信它foo()被调用了。关于我做错了什么的任何想法?

问候,

vegaaa

0 投票
1 回答
67 浏览

sequelize.js - 创建行但承诺不解决

使用 seqalizerjs,解决一个承诺:

以 chai 作为承诺进行测试

但我总是得到这个: