【发布时间】:2012-08-10 11:59:10
【问题描述】:
我有一个模型PromoCode,它有一个.generate! 方法,它调用.generate,它使用SecureRandom.hex(5) 生成一个字符串并将其保存到数据库中:
class PromoCode < ActiveRecord::Base
class << self
def generate
SecureRandom.hex 5
end
def generate!
return create! code: generate
end
end
end
现在我想编写一个规范来测试生成的字符串的唯一性。只要生成了不存在的 PromoCode,就应该调用 .generate 方法。
我不知道该怎么做,因为我不能真正删除 .generate 方法来返回固定值(因为那样它会陷入无限循环)。
这是迄今为止模型的通过规范:
describe PromoCode do
describe ".generate" do
it "should return a string with a length of 10" do
code = PromoCode.generate
code.should be_a String
code.length.should eql 10
end
end
describe ".generate!" do
it "generates and returns a promocode" do
expect {
@promo = PromoCode.generate!
}.to change { PromoCode.count }.from(0).to(1)
@promo.code.should_not be_nil
@promo.code.length.should eql 10
end
it "generates a uniq promocode" do
end
end
end
任何方向表示赞赏。
【问题讨论】:
标签: ruby-on-rails rspec rspec2 rspec-rails