我正在使用FactoryGirl和Rspec进行测试.如果为零,则模型在init之后设置外键.因此它使用另一个关联的数据.但我怎么测试呢?通常我会使用工厂来创建这个对象,并使用stub_chain作为"self.user.main_address.country_id".但是在创建此对象后,将调用initialize.我没有机会把它留下来.
after_initialize do
if self.country_id.nil?
self.country_id = self.user.main_address.country_id || Country.first.id
end
end
Run Code Online (Sandbox Code Playgroud)
任何的想法?
我们切换到一个新的开发服务器,并体验到我们的测试套件需要两倍的时间.我们测试了数据库,文件系统等,但这些都非常快,甚至比以前更快.
所以我们写了一个小红宝石基准测试(Fibonacci)并执行了几次(平均值低于以下):
time_start = Time.now
f = lambda { |x| x < 2 ? x : f.call(x-1) + f.call(x-2) }
f.call(35)
time = Time.now - time_start
puts "#{time.round(4)}s needed"
Run Code Online (Sandbox Code Playgroud)
XEN之前的机器:6s
使用OpenVZ后的机器:11,5
两台机器上都安装了rvm的Debian Squeeze( - >编译)ruby-1.9.3-p194.这些机器没有高负荷,内存也可以.
或多或少唯一的区别是虚拟化引擎.在生产中,我们使用VMware ESXi.基准需要大约11s.我们用KVM测试了另一台服务器,基准测试需要2,5s.
那么我们可以在虚拟化中改变什么来使我们的红宝石更快?或者您是否有其他想法可以解决问题?