0
我要測試模型問題get_uniq_id方法。在rspec示例中隱含使用主題不起作用
應用程序/模型/顧慮/ id_generation.rb
module IdGeneration
extend ActiveSupport::Concern
module ClassMethods
def get_uniq_id
id = ''
loop {
id = generate_id
break unless Ticket.find_by_token(id)
}
id
end
def generate_id
id = []
"%s-%d-%s-%d-%s".split('-').each{|v| id << (v.eql?('%s') ? generate_characters : generate_digits)}
id.join('-')
end
def generate_digits(quantity = 3)
(0..9).to_a.shuffle[0, quantity].join
end
def generate_characters(quantity = 3)
('A'..'Z').to_a.shuffle[0, quantity].join
end
end
end
規格/顧慮/ id_generation_spec.rb
require 'spec_helper'
describe IdGeneration do
class Dummy
include IdGeneration::ClassMethods
end
subject { Dummy.new }
it { should get_uniq_id.match(/[A-Z]{2}-[0-9]{2}-[A-Z]{2}-[0-9]{2}-[A-Z]{2}/) }
end
它拋出了錯誤:
Failure/Error: it { should get_uniq_id.match(/[A-Z]{2}-[0-9]{2}-[A-Z]{2}-[0-9]{2}-[A-Z]{2}/) }
NameError:
undefined local variable or method `get_uniq_id' for #<RSpec::ExampleGroups::IdGeneration:0x00000001808c38>
如果我指定s明確指出it { should subject.get_uniq_id.match(/[A-Z]{2}-[0-9]{2}-[A-Z]{2}-[0-9]{2}-[A-Z]{2}/)
}。有用。
我是否需要明確指定主題?