首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >检查Jest中的可枚举项

检查Jest中的可枚举项
EN

Stack Overflow用户
提问于 2021-04-25 10:10:28
回答 2查看 55关注 0票数 0

在Jest中有没有办法使用类似数组的符号来检查可迭代对象(使用[Symbol.iterator]方法)?

如下所示:

代码语言:javascript
运行
复制
expect(new Matrix).toBe([
  [ 1, 0, 0 ],
  [ 0, 1, 0 ],
  [ 0, 0, 1 ],
])

其中Matrix不是数组,但具有[Symbol.iterator]方法:

代码语言:javascript
运行
复制
class Matrix {
  public *[Symbol.iterator]() {
    yield new Vector(1, 0, 0)
    yield new Vector(0, 1, 0)
    yield new Vector(0, 0, 1)
  }
}

在这个例子中,方法应该是递归的,这一点很重要,因为对象的每个(产生的)元素也可能是可迭代的:

代码语言:javascript
运行
复制
class Vector {
  private values : number[]

  public constructor(values : number[]) {
    this.values = values
  }

  public *[Symbol.iterator]() {
    return yield this.values
  }
}
EN

Stack Overflow用户

发布于 2021-04-25 15:58:51

测试可以依赖于可迭代程序在JavaScript中的预期行为方式:

代码语言:javascript
运行
复制
const matrix = new Matrix();

expect(matrix[Symbol.iterator]).toEqual(expect.any(Function));
expect([...matrix]).toEqual([
  expect.any(Vector),
  expect.any(Vector),
  expect.any(Vector),
]);

expect([...matrix].map(row => [...row]).toEqual([
  [ 1, 0, 0 ],
  [ 0, 1, 0 ],
  [ 0, 0, 1 ],
]);

或者,可以单独模拟和测试Vector

票数 0
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67249124

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档