【发布时间】:2020-11-05 13:39:00
【问题描述】:
在你不喜欢之前,留下评论告诉我为什么......
其中一个字符串是使用 fs 导入的,另一个是通过代码创建的。我在调试时注意到一些奇怪的字符,但我不确定如何在不修剪的情况下让它通过。我不想修剪,因为这会破坏很多其他检查,间距很重要。
32m 与 31m 是这些字符串不匹配的原因。
更多上下文:
更多上下文:
const originalFile = fs.readFileSync(`./tests/mocks/${filePath}.js`, 'utf8');
const classParser = ClassParser.create();
let parseResult = classParser.parse(originalFile, '');
const compiledFile = fs.readFileSync(`./tests/mocks/${filePath}.d.ts`, 'utf8');
const typeFileAry = parseResult.typeFile.split('\n');
const compileAry = compiledFile.split('\n');
expect(typeFileAry.length).toBe(compileAry.length);
for(let i = 0; i < typeFileAry.length; ++i) {
expect(typeFileAry[i]).toEqual(compileAry[i]);
}
挖掘 Jest 源代码,看起来他们执行 Object.is(a,b) 并且返回错误。 Object.is('','') 通常返回 true。我不确定这些字符是从哪里来的。
【问题讨论】:
-
您是否尝试过创建一个最小的、可重现的示例?我发现它有时可以帮助缩小根本原因并找到解决方案。 stackoverflow.com/help/minimal-reproducible-example
-
@ShannonMatthews 空字符串大约是我能得到的最窄的。它曾经是一个不相等的巨大字符串,但后来我在新行上拆分字符串以单独比较每一行。
-
Object.is('', '')将始终返回 true。一定有其他事情发生,比如你有一条不同的线
标签: javascript web jestjs fs