javascript - 如何用 Chai 断言对象数组中的类型?
问题描述
我有以下上下文:
const data = [
{
id: 1,
name: 'thenamefoo',
modified: new Date() // random date
},
{
id: 2,
name: 'namebar',
modified: new Date() // random date
},
...
];
expect(data)...
我想断言我的数据将始终是一个数组,其中包含具有固定键(和类型)的对象。
例如,我想要类似的东西
expect(data)
.to.be.an('array')
.that.all.have.types.like({
id: Number,
name: String,
modified: Date
});
可能吗?如何?任何库?
解决方案
在我看来,您应该专注于验证数据,而不是玩弄笨拙的断言 DSL。通过简单的真/假检查,您所需要的只是谦虚assert
:
test('my data is valid', () => {
data.forEach(({id, name, modified}) => {
assert(typeof id === 'number', `${id} is not a number`);
assert(typeof name === 'string', `${name} is not a string`);
assert(modified instanceof Date, `${modified} is not a date`);
});
});
走得更远
如果您需要检查其他内容,这当然没有多大帮助:
- 数组不为空
- 每个对象都有
id
,name
和modified
as 属性。不多不少 id
是一个正整数name
不是空字符串- ...
对于更细粒度的控制,您绝对应该查看jsonschema。
推荐阅读
- maven - Maven - do a mvn install on local artifact when packaging
- c++ - Traversal pointer in tree while insertion
- ios - 如何在 iOS swift 模块化应用程序中执行路由?
- c++ - 我找不到调整神经网络的正确方法
- datepicker - 日期选择器:任何一天的选择
- go - Closures in Golang - String not displayed
- java - 限制打开的最大文件大小
- python-3.x - uWSGI +nginx 设置 - Dash (Plotly) 部署
- javascript - 如何使用 opencv_contrib 构建自定义 opencv.js
- javascript - Highcharts: Drilldown from map to chart