Ruby中方法的静态局部变量?

前端之家收集整理的这篇文章主要介绍了Ruby中方法的静态局部变量?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有这个:
def valid_attributes
  { :email => "some_#{rand(9999)}@thing.com" }
end

对于Rspec测试吧?但我想做这样的事情:

def valid_attributes
  static user_id = 0
  user_id += 1
  { :email => "some_#{user_id}@thing.com" }
end

我不希望user_id可以从任何地方访问,但该方法,
这可能与Ruby有关吗?

解决方法

这个答案的范围比你的问题要大一些,但我认为它是你想要做的事情的根源,并且将是最容易和最易维护的.

我认为你真正想要的是工厂.尝试使用像factory_girl这样的东西,这将使很多测试变得更容易.

首先,您要设置工厂来创建您正在测试的任何类型的对象,并使用序列作为电子邮件属性

FactoryGirl.define do
  factory :model do
    sequence(:email) {|n| "person#{n}@example.com" }
    # include whatever else is required to make your model valid
  end
end

然后,当您需要有效属性时,您可以使用

Factory.attributes_for(:model)

您还可以使用Factory.create和Factory.build创建模型的已保存和未保存实例.

有关getting started document中更多功能的说明,以及如何将工厂添加到项目中的说明.

原文链接:https://www.f2er.com/ruby/267684.html

猜你在找的Ruby相关文章