1.0.4 • Published 5 months ago
@qqi/dev-log v1.0.4
@qqi/dev-log
一个用于开发的时候打印日志的工具,本质就是 console 的封装。
安装
npm install @qqi/dev-log --save使用 Dog
创建全局的 dog (dev log 的缩写,天才第一步,起名要认真) 对象
/// 这里假设以 `a node tools` 为 `name` 的值
export const dog = new Dog({ name: 'a node tools' });在需要打印日志的地方引入 dog 对象
import { dog } from './dog';
dog('你好'); // 该值是否打印还依赖于环境变量中有没有配置 `dev_log_dev` 的值启用配置
# 配置 name 为 'a node tools',则使用 `a_node_tools_dev` 或 `A_NODE_TOOLS_DEV` 来启动
a_node_tools_dev=true npm run dev使用 dev
在单元测试的时候使用 jest ,在功能测试时使用 node:test 和 node:assert。但是测试的时候,总是有打印的消息被 node:test 的结果覆盖。所以,写了一个简介的 dev ,用于功能测试。
类似于 node:test,使用如下:
import { dev } from '@qqi/dev-log';
const log = console.log;
dev.beforeEach(() => {
console.log('你们执行前需要先执行我');
});
dev.afterEach(() => {
console.log('你们执行完后会执行我');
});
// 简单使用
dev('测试 1', () => {
log(1);
});
// 我其实就是想能够跳过测试而不是每一次 ((skip)=>{ if(skip) return; ....})(false)
dev.skip('跳过的测试', () => {
log('我并不会被打印出来');
});
// 子测试,每一个测试是独立的,类似于 jest,单独的测试模块出现 Error 将阻止剩余逻辑执行
dev('包含子项的测试', it => {
it.before(() => {
console.log('我是大哥,我先执行,且仅执行一次');
});
it.before(() => {
console.log('我是二哥,我执行次于大哥,且仅执行一次');
});
it.after(() => {
console.log('我是小弟,你们执行完再执行我就行,仅执行一次');
});
it.beforeEach(() => {
console.log('我是三哥,我执行次于二哥,每次子项执行我都执行一次');
});
it.beforeEach(() => {
console.log('我是二弟,我执行早于小弟,每次子项执行我都执行一次');
});
it('子项 1️⃣', () => {
log('我要出错');
throw new Error('我粗错了');
log('完啦,我打印不出来了');
});
it('子项 2️⃣', () => {
log('没想到吧,我还活着');
});
});
// 可以异步执行
await dev('测试异步的代码', async it => {
it('测试异代码 2️⃣ ', async () => {
log('异步代码 2️⃣ 外部');
return new Promise(resolve => {
log('异步代码 2️⃣ 内部');
setTimeout(() => {
log('异步代码 2️⃣');
resolve('异步代码 2️⃣');
}, 500);
});
});
await it<string>('测试异代码 1️⃣ ', async () => {
log('异步代码 1️⃣ 外部');
return new Promise(resolve => {
log('异步代码 1️⃣ 内部');
setTimeout(() => {
log('异步代码 1️⃣');
resolve('异步代码 1️⃣');
}, 1000);
});
});
});在使用异步的测试时,总是期待能够使用 await ,否者可能将收到 TypeError。