Ruby中方法的静态局部变量?
发布时间:2020-12-16 21:17:08 所属栏目:百科 来源:网络整理
导读:我有这个: 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可以从任何
我有这个:
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可以从任何地方访问,但该方法, 解决方法
这个答案的范围比你的问题要大一些,但我认为它是你想要做的事情的根源,并且将是最容易和最易维护的.
我认为你真正想要的是工厂.尝试使用像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中更多功能的说明,以及如何将工厂添加到项目中的说明. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |