为什么不推荐使用这种方法在chai中检查lengthOf()数组?

Zeeecho

我正在看Chai文档,我想知道,因为在现场我看不到任何解释,为什么不建议这样做。使用此功能可能会出错,这有什么不好呢?

我正在测试我的API调用是否返回数组中的100个对象。由于我的数据库中没有太多条目,因此我想使用此代码。

柴站点上的代码示例:

expect('foo').to.have.lengthOf(3); // Recommended
expect('foo').to.have.lengthOf.at.most(4); // Not recommended

我的测试示例:

it('should return 100 object by default, if limit set to 0', (done) => {
  chai.request(server)
    .get('/api/v1/assets?limit=0')
    .then((res) => {
      expect(res).to.have.status(200);
      expect(res.body).to.be.a('array');
      expect(res.body).to.have.lengthOf.at.most(100);
      done();
    })
    .catch((err) => {
      done(err)
    })
});
纳撒尼尔·C

不建议这样做,因为它对于断言不是很特定。如果您使用at.most.(100)并且API返回50或1或什至是一个空数组,它仍然会通过。该文档假设大多数人希望测试如果返回空数组而失败,并且希望检查确切的数字。

理想的做法是在数据库中创建101个条目(也许通过其他端点?),然后检查要返回的正好100个。但是,如果这很困难,您至少可以检查大于0但小于100的值

expect(res.body).to.have.lengthOf.at.least(1).and.lengthOf.at.most(100);

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

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

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

为什么不推荐使用这种“goto”语句?

为什么Java 9中不推荐使用finalize()方法?

为什么Scala中不推荐使用。+()方法?

为什么不推荐使用@ConfigurationProperties中的方法位置?

为什么Go中没有推广这种方法?

为什么不推荐使用WeakMap clear()方法?

为什么不等待这种方法?

为什么在C ++ 14中不推荐使用std :: shuffle方法?

为什么在JUnit中不推荐使用assertEquals(double,double)?

为什么在HTML中不推荐使用<center>标签?

为什么AngularJS指令中不推荐使用`replace`属性?

为什么在C ++ 20中不推荐使用volatile?

为什么在Guava中不推荐使用Files.deleteDirectoryContents()?

为什么在Akka 2.3中不推荐使用Transactor

为什么在Guava 10中不推荐使用softKeys()?

在OS X 10.9中不推荐使用'gluErrorString'。为什么?

为什么不推荐使用<nobr>?

为什么不推荐使用HibernateTemplate?

为什么不推荐使用Cloneable?

为什么不推荐使用DefaultAnnotationHandlerMapping?

为什么不推荐使用std :: iterator?

为什么不推荐使用ActionBarActivity

为什么不推荐使用Jquery DataTable?

为什么不推荐使用集成模型?

为什么这种使用数组的方法不是最佳的?

为什么不推荐使用AngularJS $ http成功/错误方法?从v1.6中删除了吗?

为什么数组包含检查不能在chai.js中按预期工作?

不推荐使用AntPathRequestMatcher。什么是替换方法?

为什么 repaint() 在这种方法中不能正常工作