2012-02-24 59 views
2

Ruby 1.9有很酷的Unicode支持,是吗?MiniTest和非拉丁语测试说明

# encoding: utf-8 
require 'minitest/spec' 
require 'minitest/autorun' 

describe "test" do 
    it "α β γ δ & a b c d" do 
    (1+1).must_equal 3 
    end 
end 

# 1) Failure: 
# test_0001__a_b_c_d(TestSpec) [test.rb:7]: 
# Expected 3, not 2. 

我的非拉丁字母在哪里?我应该总是用我可怕的英语写我的测试吗?

因为我可以定义任何Unicode符号方法:

def α_β_γ_δ_a_b_c_d 
    puts "geeeek" 
end 

α_β_γ_δ_a_b_c_d 
#=> "geeeek" 

PS我的问题似乎并不清楚。我想问如何让minitest的失败描述显示我的非拉丁定义。

+0

Downvoted and vote to close。这不是一个问题,这是一个咆哮。咆哮属于博客,SO是针对问题的。 – 2012-02-24 15:25:20

+0

这是一个问题。我试图问我怎么能在故障描述中返回所有的unicode字母 – fl00r 2012-02-24 16:10:37

+0

@JörgW Mittag我已经更新了我的问题,以便更清楚 – fl00r 2012-02-25 11:36:27

回答

2

它是关于regexp used here。它显示猴子修补后的UTF-8字符/\W+//\s+/

# encoding: utf-8 
require 'minitest/spec' 
require 'minitest/autorun' 

class MiniTest::Spec < MiniTest::Unit::TestCase 
    def self.it desc = "anonymous", &block 
    block ||= proc { skip "(no tests defined)" } 

    @specs ||= 0 
    @specs += 1 

    # regexp /\W+/ replaced with /\s+/ 
    name = "test_%04d_%s" % [ @specs, desc.gsub(/\s+/, '_').downcase ] 

    define_method name, &block 

    self.children.each do |mod| 
     mod.send :undef_method, name if mod.public_method_defined? name 
    end 
    end 
end 

describe "test" do 
    it "α β γ δ & a b c D" do 
    (1+1).must_equal 3 
    end 
end 

# 1) Failure: 
# test_0001_α_β_γ_δ_&_a_b_c_d(test) [forwarding.rb:24]: 
# Expected: 3 
# Actual: 2 
+0

酷! https://github.com/seattlerb/minitest/pull/97 :) – fl00r 2012-02-25 20:59:03

+0

'/ [^ [[:word:]] /'? – fl00r 2012-02-25 21:30:30