如何使用产量生成器测试 chai 异常

多莉·齐顿

我正在尝试测试一个应该总是抛出异常的生成器:

function* failureFunc() {
  yield* getThing('blabla'); //throws an error
}

我应该如何构建柴期望/应该正确表达?到目前为止,我无法让我尝试过的表达方式工作:

chai.expect(yield* failureFunc()).to.throw(Error);
chai.expect(yield* failureFunc()).to.be.rejectedWith(Error);

还尝试添加一些柴生成器功能。似乎没有任何效果。不确定构建此表达式的正确方法是什么。

路易斯

您必须遍历生成器。以下是您可以做到的方法:

const chai = require("chai");
const cap = require("chai-as-promised");
const Promise = require("bluebird");

chai.use(cap); 

function* failureFunc() {
  yield* getThing('blabla'); // Throws an error, because getThing is not defined.
}

chai.expect(() => Array.from(failureFunc())).to.throw(Error);
chai.expect(Promise.coroutine(failureFunc)()).to.be.rejectedWith(Error);

在第一种情况下,我使用Array.fromwhich 将尝试遍历整个生成器。通过这样做,您可以在任何迭代中捕获错误。(理论上,生成器可以在任何迭代周期中抛出。)您可以使用任何迭代整个生成器的方法。或者,如果您正在测试第 1 次迭代失败的案例,您可以在() => failureFunc().next().

在第二种情况下,我使用 BluebirdPromise.coroutine将生成器转换为返回承诺并检查承诺是否被拒绝的函数。由于 Promise 仅在生成器完成迭代后才会解析,因此可以确保它遍历所有迭代。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用Mocha / Chai测试JS异常

来自分类Dev

如何测试异步生成器引发的异常?

来自分类Dev

如何使用chai和mocha验证抛出的JavaScript异常?

来自分类Dev

使用Mocha / Chai调用时如何强制函数引发异常

来自分类Dev

生成器的异常处理

来自分类Dev

生成器的异常处理

来自分类Dev

强制迭代生成器以查看异常

来自分类Dev

生成器中嵌套的异常行为

来自分类Dev

生成器中嵌套的异常行为

来自分类Dev

生成器中嵌套的异常行为

来自分类Dev

生成器中嵌套的异常行为

来自分类Dev

强制迭代生成器以查看异常

来自分类Dev

如何使用Chai。测试抛出的错误

来自分类Dev

如何使用Mocha Chai测试Vue方法

来自分类Dev

python contextmanager如何将异常引发回带装饰的生成器?

来自分类Dev

如何使用 chai/chai-smoothie 断言输入字段的值?

来自分类Dev

为什么生成器挂起而不抛出异常?

来自分类Dev

为什么未在Python生成器中捕获异常?

来自分类Dev

具有多个联接的查询生成器上的异常

来自分类Dev

在不关闭生成器的情况下引发异常

来自分类Dev

通过`for`循环内的生成器捕获异常

来自分类Dev

python生成器列出了重新引发的异常

来自分类Dev

重新绑定时,生成器引发异常

来自分类Dev

Pytest 不会向夹具生成器中抛出异常

来自分类Dev

使用定制的chai方法断言与chai-as-promised

来自分类Dev

使用Chai.js的测试失败

来自分类Dev

使用Chai进行MongoDB测试失败

来自分类Dev

使用 Mocha 和 Chai 测试 React

来自分类Dev

如何使用Mocha / chai / chai-as-promised测试ES7异步功能