gpt4 book ai didi

ruby-on-rails - 您将如何为 `Iconv.new("UTF8//IGNORE", ...)` 习语编写测试?

转载 作者:数据小太阳 更新时间:2023-10-29 07:17:04 27 4
gpt4 key购买 nike

这个 Iconv 习惯用法将字符串转码为 UTF-8 并删除无法音译的字符:

require "iconv"

def normalize(text)
Iconv.new('UTF-8//IGNORE', 'UTF-8').iconv(text.dup)
end

您实际上将如何为此编写测试?

编辑:我最终简化了问题,因为我意识到尝试在 Rails # encoding: utf-8 spec 文件中测试这个的上下文使问题复杂化。所以现在赏金有点傻,但如果有人能展示我可以完成的测试,我还是会奖励它。

最佳答案

您可以使用 #pack 从字节数组构造字符串方法。这样,您可以轻松生成无效/错误的字符串并在测试中使用它。

例子:

describe "#normalize" do
it "should remove/ignore invalid characters" do
# this "string" equals "Mandados de busca do caso Megaupload considerados inv\xE1lidos - Tecnologia - Sol"
bad_string = [77, 97, 110, 100, 97, 100, 111, 115, 32, 100, 101, 32, 98, 117, 115, 99, 97, 32, 100, 111, 32, 99, 97, 115, 111, 32, 77, 101, 103, 97, 117, 112, 108, 111, 97, 100, 32, 99, 111, 110, 115, 105, 100, 101, 114, 97, 100, 111, 115, 32, 105, 110, 118, 225, 108, 105, 100, 111, 115, 32, 45, 32, 84, 101, 99, 110, 111, 108, 111, 103, 105, 97, 32, 45, 32, 83, 111, 108].pack('c*').force_encoding('UTF-8')

normalize(bad_string).should == 'Mandados de busca do caso Megaupload considerados invlidos - Tecnologia - Sol'
end
end

(很抱歉测试字符串太长了,我只是在我的代码中找不到更短的例子)

关于ruby-on-rails - 您将如何为 `Iconv.new("UTF8//IGNORE", ...)` 习语编写测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14823453/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com