首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >测试数组是否为空或包含某个对象

测试数组是否为空或包含某个对象
EN

Stack Overflow用户
提问于 2018-08-29 23:05:38
回答 1查看 8.9K关注 0票数 4

我想测试一个数组是否为空,或者是否包含某个结构的对象。在伪代码中,它可能是这样的:

代码语言:javascript
复制
expect([])
  .toHaveLength(0)
  .or
  .arrayContaining(
    expect.toMatchObject(
     { foo: expect.any(String) }
    )
  ) => true

expect([{foo: 'bar'}])
  .toHaveLength(0)
  .or
  .arrayContaining(
    expect.toMatchObject(
     { foo: expect.any(String) }
    )
  ) => true

expect([1])
  .toHaveLength(0)
  .or
  .arrayContaining(
    expect.toMatchObject(
      { foo: expect.any(String) }
    )
  ) => false

也许我在Jest中是如何工作的问题上搞错了,但对我来说,我的问题看起来像是一个或-问题。

EN

回答 1

Stack Overflow用户

发布于 2018-08-30 08:42:36

在您的测试套件中封装逻辑或的最好方法是将特定的情况排除在测试本身之外。例如:

代码语言:javascript
复制
it('has an array of objects', () => {
  if (arr.length > 0) {
    expect(arr).toBe(expect.arrayContaining(expect.toMatchObject({ foo: expect.any(String) })));
  }
});

但是,我认为一种更有利于单元测试的方法是将您的关注点分开。一个测试何时存在空数组,另一个测试何时将foo属性设置为'bar',依此类推。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52080746

复制
相关文章

相似问题

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