سؤال

لقد حصل روبي 1.9 على دعم رائع لـ Unicode، أليس كذلك؟

# 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"

ملاحظة يبدو أن سؤالي غير واضح.أريد أن أسأل عن كيفية عمل وصف فشل minitest لإظهار تعريفاتي غير اللاتينية.

هل كانت مفيدة؟

المحلول

فهو على وشك التعبير العادي المستخدم هنا.يُظهر أحرف 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
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top