当我运行Mocha时,它会分别尝试为通过或失败的测试运行显示复选标记或X.我见过Mocha输出的精美截图。但这些截图都是在Mac或Linux上拍摄的。在Windows的控制台窗口中,这些字符都显示为一个不起眼的空框字符,经典的“嗯?”字形:
如果我在控制台窗口中突出显示文本并将其复制到剪贴板,我会看到实际的Unicode字符;我可以将花哨的字符粘贴到Web浏览器的文本框中,它们渲染得很好(✔,✖)。所以Unicode输出正好进入控制台窗口;问题是控制台窗口没有正确显示这些字符。
如何解决这个问题,以便所有Mocha的输出(包括✔和✖)在Windows控制台中正确显示?
答案 0 :(得分:25)
通过将字符粘贴到LinqPad,我能够发现它们是'HEAVY CHECK MARK' (U+2714)和'HEAVY MULTIPLICATION X' (U+2716)。看起来在Windows 7中可用的任何控制台字体(Consolas,Lucida控制台或光栅字体)中都不支持任何字符。事实上,所有中出现的Windows 7附带的字体,只有极少数人支持这些角色(Meiryo,Meiryo UI,MS Gothic,MS Mincho,MS PGothic,MS PMincho,MS UI Gothic和Segoe UI Symbol)。以“MS”开头的那些都是固定宽度(等宽字体)字体,但它们在控制台典型的字体大小上看起来都很糟糕。其他人都出局了,因为控制台需要固定宽度的字体。
所以你需要下载一个字体。我喜欢DejaVu Sans Mono - 它是免费的,它在控制台大小方面看起来很好,很容易告诉0
的{{1}}和O
的{{1}}来自1
,它有各种奇特的Unicode符号,包括Mocha使用的支票和X.
不幸的是,安装新的控制台字体有点痛苦,但它是可行的。 (步骤改编自this post by Scott Hanselman,但扩展到包括I
的非显而易见的微妙之处。)
步骤:
l
。000
的值和一个名为HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Console\TrueTypeFont
的值,因此我必须将新名称命名为0
。00
。现在Mocha的输出将显示出它的所有荣耀。
答案 1 :(得分:7)
更新:此问题现已修复。从Mocha 1.7.0开始,后备用于默认控制台字体中不存在的符号(√而不是✔,×而不是✖等)。它并不像它可能的那样漂亮,但它确实胜过空盒占位符。
有关详情,请参阅相关的提款请求:https://github.com/visionmedia/mocha/pull/641