【问题标题】:How can I make Mocha test compile Ruby-ish Unicode string?如何让 Mocha 测试编译 Ruby-ish Unicode 字符串?
【发布时间】:2015-10-13 18:29:47
【问题描述】:

我正在从 Node.js 应用程序调用 Telegram Bot API。我需要向 API 发送一些 Unicode 字符,它只接受 Ruby 格式(\u{1F680} 输出 ???? )。我将这种格式的所有 Unicode 字符存储在一个文件中,这是实际向 API 发送消息的人所需的文件。

Node.js 对此没问题,它工作正常。但是,当我在同一代码上运行 Mocha 测试时,它会导致 Unexpected token ILLEGAL 错误,它不喜欢 Ruby Unicode 格式。测试本身甚至没有使用这个 Unicode 字符,编译失败了。

emojis.rocket = '\u{1F680}';
                ^^^
SyntaxError: Unexpected token ILLEGAL
    at exports.runInThisContext (vm.js:73:16)
    at Module._compile (module.js:443:25)
    at Object.Module._extensions..js (module.js:478:10)
    at Module.load (module.js:355:32)
    at Function.Module._load (module.js:310:12)
    at Module.require (module.js:365:17)
    at require (module.js:384:17)
    at Object.<anonymous> (/path/to/file/values_es.js:1:76)
  // more error lines... 
npm ERR! Test failed.  See above for more details.

如果我将其更改为 JavaScript Unicode 格式 (\u1F680),Mocha 和 Node.js 可以接受,但 API 无法将其作为适当的字符。

我尝试了以下方法:

  • 以JavaScript格式存储\u1F680,然后在运行时添加{},但它输出不同的字符(Ὠ0),对应于前四个十六进制值(\u1F68)和额外的0
  • 以 JavaScript 格式存储 \u1F680 并添加编码 Ruby 函数 code.encode('UTF-8') 以防 Telegram Bot API 执行 Ruby 代码。也不工作,它打印\u1F680.encode('UTF-8')

有什么方法可以让 Mocha 接受 Ruby-ish (\u{1F680}) 格式?

【问题讨论】:

    标签: node.js ruby unicode emoji ruby-mocha


    【解决方案1】:

    使用 RegExp 构造函数通过 mocha 测试:

    RegExp('\u{1F680}')
    

    然后使用exectoString 将其转换为字符串:

    RegExp('\u{1F680}').exec('\u{1F680}').toString()
    

    参考文献

    【讨论】:

      猜你喜欢
      • 2022-10-14
      • 2011-05-25
      • 1970-01-01
      • 1970-01-01
      • 2017-05-23
      • 1970-01-01
      • 2010-11-22
      • 2015-03-15
      • 1970-01-01
      相关资源
      最近更新 更多