【问题标题】:Mocha fails with no string diff, utf-8?摩卡失败,没有字符串差异,utf-8?
【发布时间】:2012-07-09 12:19:55
【问题描述】:

我有一个失败的 mocha 测试输出我的字符串并突出显示“实际”和“预期”...除了没有突出显示。

经过一番猛烈抨击,我想我已经确定我的实际字符串包含一些完全对我隐藏的古怪 UTF-8 字符,而 Mocha 似乎不知道要突出显示它们。

我通过将我的预期值和实际值写入原始文本文件并将它们加载到 Kaleidoscope 中来解决这个问题,这表明它们通过突出显示单词之间的空格而有所不同。

我尝试加载 utf8 库(在 npm 上)并使用 utf8.encode str 编码其中一个字符串,但仍然失败,但现在字符显示为不仅仅是空格,Mocha 确实突出显示:

但不管怎样,我的测试都失败了。如何对这些字符串进行编码/解码/任何内容,以便它们匹配并且我的测试通过?

顺便说一句,我在测试中使用的比较字符串如下所示:

【问题讨论】:

  • 你是如何得到预期正文的内容的?如果您复制/粘贴它,那么您可能需要将粘贴的 utf8 字符转换为正确的字符串文字 utf8 格式,如 \u0065 或其他东西。
  • 嗯,是的,我确实复制/粘贴了...有什么东西可以让我通过将这些字符转换为字符串文字吗?
  • 既然你把它粘贴到你的文本编辑器中,你用什么编辑器?也许它将您的 JS 文件保存为不正确的编码?尝试在你的 mocha 文件上运行 file -bi filename.js 并确保它是 utf-8。只是复制粘贴应该没问题,因为字符串文字中的 UTF8 字符应该没问题。
  • 您的控制台字体似乎无法显示所涉及的特定字符;您可以尝试将其设置为使用更全面的字体(如何做到这一点取决于您的操作系统/桌面)。
  • 我通过 iTerm2(不是 MacVim)使用 Vim,所以我将它直接复制/粘贴到了 Vim 缓冲区中。我检查了我的规范的文件类型,它看起来设置正确:text/plain; charset=utf-8。我很想知道如何将此复制/粘贴的文本转换为转义文字——我该怎么做?

标签: node.js coffeescript mocha.js


【解决方案1】:

确保您的文本编辑器将您的源代码保存为正确的 UTF-8,或者将那些复制/粘贴的字符转换为转义文字作为 @loganfsmyth 正确 cmets。

【讨论】:

  • 我已经尝试使用我知道支持 UTF-8(TextMate、SublimeText2)的几个编辑器进行复制/粘贴,并且我已经使用 file -bi 检查了文件类型,并且字符集正确设置为 @ 987654323@。我认为我最好的选择是按照您的建议将所有字符转换为转义文字,但我该怎么做呢?
  • 如果您确信磁盘上的二进制数据已正确编码为 UTF-8,请使用十六进制编辑器打开它(或告诉您的编辑器以十六进制打开),然后将十六进制转换为 unicode 转义文字.这个答案有一个例子:stackoverflow.com/a/8005329/266795
  • 这似乎需要做很多工作......无论如何我可以通过一些程序将此文本传递并让它将违规字符过滤为文字,同时保持字符串的其余部分完好无损?通过将期望更改为 it "gets the full body", -> escape(@parsed.body).should.equal escape(page.body),我的测试通过了,但现在我的差异是一大块转义字符,这使得在 TDD 期间很难获得良好的视觉差异......
  • 当然,如果你编写“一些程序”来做到这一点。 :-) 在 JavaScript 中,您可以使用 String.charCodeAt 并忽略任何高于 ASCII (127) 的内容。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-11-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-27
  • 2012-08-09
  • 1970-01-01
相关资源
最近更新 更多