Skip to content

Commit

Permalink
fix(Unittest): 修复了单元测试代码中的诸多小问题 (#482)
Browse files Browse the repository at this point in the history
* 修正了运行单元测试时,测试点 id 与 commonmark.spec.json 对不上的问题

在 test/core/CommonMark.spec.ts 中,testcase 的名字原本是 `commonmark-${index}`,而
test/suites/commonmark.spec.json 中的 example 的字段是从 1 开始标号的,这导致
显示的测试点编号与 example 字段差了 1。

* 在 test/core/CommonMark.spec.ts 中加入对 <br /> 的处理

CommonMark 中的换行全部为 `<br />` 格式,导致 test/core/CommonMark.spec.ts 中的
`cleanHTML` 函数无法过滤。

 修改后可以再通过 4 个测试点。

* 在 test/core/CommonMark.spec.ts 添加了清理后的 HTML 的输出

 旧代码在单元测试不通过时,仅会显示标准 (standard) HTML 与 cherry 输出的原始 HTML,
 而 cherry 输出的原始 HTML 包含大量标签,不便于查看。
 本 commit 添加了对 cleaned 之后的 HTML 的输出,方便进行肉眼比对。

* 在 test/core/CommonMark.spec.ts 中加入对字符串首尾的空格的处理

Cherry Markdown 生成的 HTML 有时会包含首/末空格,进而导致 CommonMark
的单元测试失败。

修改后可以再通过 18 个测试点。
  • Loading branch information
interestingLSY authored Jul 2, 2023
1 parent aa574a7 commit 58092e4
Showing 1 changed file with 6 additions and 1 deletion.
7 changes: 6 additions & 1 deletion test/core/CommonMark.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -18,9 +18,12 @@ const cherryEngine = new CherryEngine({
const cleanHTML = (raw) => {
// 处理换行回车
let html = raw.replace(/\s*<br>\s*/gm, '\n');
html = html.replace(/\s*<br \/>\s*/gm, '\n');
html = html.replace(/(?<=>)\n(?=<)/gm, '');
// 清理属性
html = html.replace(/(?<=<)([^\/\s>]+)[^<]*?(?=>)/gm, (match, tag) => tag);
// 清理首尾的多余空格
html = html.trim();
return html;
}

Expand All @@ -30,6 +33,8 @@ const formatOutput = (message, input, standard, result) => {
input: ${input}
standard: ${standard}
cherry: ${result}
standard(cleaned): ${cleanHTML(standard)}
cherry(cleaned): ${cleanHTML(result)}
`
}

Expand All @@ -48,7 +53,7 @@ expect.extend({

describe('engine', () => {
suites.forEach((item, index) => {
test(`commonmark-${index}`, () => {
test(`commonmark-${item.example}`, () => {
// @ts-ignore
expect(cherryEngine.makeHtml(item.markdown)).matchHTML(item.html, item.markdown);
});
Expand Down

0 comments on commit 58092e4

Please sign in to comment.