本文参加了由公众号@若川视野 发起的每周源码共读活动,点击了解详情一起参与。
Convert a value to an array
源码解析
export default function arrify(value) {
// `null`或`undefined`值返回一个空数组。
if (value === null || value === undefined) {
return [];
}
// 数组类型判断
if (Array.isArray(value)) {
return value;
}
// 字符串类型判断
if (typeof value === 'string') {
return [value];
}
// 判断是否为可迭代对象(存在Symbol.iterator)
if (typeof value[Symbol.iterator] === 'function') {
return [...value];
}
return [value];
}
之前没有使用写过测试用例 第一次接触,之后需要持续练习一下
使用的插件
xo
JavaScript/TypeScript linter(ESLint 包装器)
ava
未来的测试运行器 AVA 利用node的异步特性让你的测试可以并发执行,这对于 IO 繁重的测试特别有用。另外,测试文件可以在不同的进程里并行运行,让每一个测试文件可以获得更好的性能和独立的环境。
import test from 'ava';
import arrify from './index.js';
test('main', t => {
t.deepEqual(arrify('foo'), ['foo']);
t.deepEqual(arrify(new Map([[1, 2], ['a', 'b']])), [[1, 2], ['a', 'b']]);
t.deepEqual(arrify(new Set([1, 2])), [1, 2]);
t.deepEqual(arrify(null), []);
t.deepEqual(arrify(undefined), []);
const fooArray = ['foo'];
t.is(arrify(fooArray), fooArray);
});
api:
.deepEqual(value, expected, [message])
断言 value
是否和 expected
深度相等。
.is(value, expected, [message])
断言 value
是否和 expected
相等。
tsd
检查 TypeScript 类型定义
该工具允许您通过创建带有扩展名的文件来为您的类型定义(即您的.d.ts
文件)编写测试用例。.test-d.ts
api
expectType(value)
检查value类型是否与T一致
package.json
参考链接: juejin.cn/post/702353…