在使用Ruby编码时,为什么使用irb(而不是基于GUI的测试方法)会有帮助?

时间:2013-03-08 09:30:29

标签: ruby irb

我已经读过,用Ruby编程时irb的目的是帮助实时测试代码。我之前学过HTML和CSS,那时我只需在浏览器中打开页面并保存/刷新页面就可以测试我的代码。 irb是否与Ruby执行类似的功能?如果是这样,我是否认为在irb中测试Ruby代码(而不是浏览器)的好处是,irb可以更容易地将Ruby中的错误与Javascript / HTML /等中的错误分开?看来Ruby程序迟早会在浏览器中运行(理论上),在我看来,程序员似乎希望测试条件尽可能接近真实用例环境。

2 个答案:

答案 0 :(得分:6)

所以这个问题与测试有关,这是一个非常广泛的主题,但我会尝试从我的角度回答你的问题。

首先,我们必须就讨论Ruby及相关网络技术时所站立的平台达成一致。

1 - Ruby并不是一种严格意义上的网络语言。这是一个巨大的误解。 Ruby不是Ruby on Rails。因此,现在大多数应用程序最终都在浏览器中,这要归功于RoR而不是Ruby。

Ruby是一种万能的语言,即。它可以做很多事情。脚本,网络,“正常应用程序”。如果你有问题,Ruby可以作为一种语言,而不是解决它。

2 - IRB是Ruby的REPL(读取eval打印循环),或者更常见的是解释器,它不是编译器。它代表Interactive RuBy shell。

关于你的问题:

您不使用IRB测试perse,使用IRB测试较小类型的语句,如1 + 1或者

my_name = "henrik"
my_age = 28
p = Person.new(my_name, my_age)
p.my_name
>> "henrik"

您可以将IRB视为“您的小型测试向导”,即。 “这是否有效,让我们在IRB中尝试一下!”。

对于您描述的实际测试,您使用RSpec或其他类型的测试框架,如果您想进行独立测试,则可以执行ruby my_test_file.rb。您的my_test_file.rb包含所有测试的位置。

RSpec阅读本文,这在使用Ruby开始测试时非常有价值。

以您描述的方式进行测试非常繁琐但与IRB无关。

答案 1 :(得分:0)

irb是我的探索性测试,尝试单行代码。它还允许您使用Ruby的内省来探索可用的内容。我做 lot 的一件事就是这样:

irb
1.9.3-p327 :001 > s = "This is a string"
 => "This is a string"
1.9.3-p327 :002 > s.methods.sort - Object.methods
 => [:%, :*, :+, :<<, :[], :[]=, :ascii_only?, :between?, :bytes, :bytesize, :byteslice, :capitalize, :capitalize!, :casecmp, :center, :chars, :chomp, :chomp!, :chop, :chop!, :chr, :clear, :codepoints, :concat, :count, :crypt, :delete, :delete!, :downcase, :downcase!, :dump, :each_byte, :each_char, :each_codepoint, :each_line, :empty?, :encode, :encode!, :encoding, :end_with?, :force_encoding, :getbyte, :gsub, :gsub!, :hex, :index, :insert, :intern, :length, :lines, :ljust, :lstrip, :lstrip!, :match, :next, :next!, :oct, :ord, :partition, :prepend, :replace, :reverse, :reverse!, :rindex, :rjust, :rpartition, :rstrip, :rstrip!, :scan, :setbyte, :size, :slice, :slice!, :split, :squeeze, :squeeze!, :start_with?, :strip, :strip!, :sub, :sub!, :succ, :succ!, :sum, :swapcase, :swapcase!, :to_c, :to_f, :to_i, :to_r, :to_str, :to_sym, :tr, :tr!, :tr_s, :tr_s!, :unpack, :upcase, :upcase!, :upto, :valid_encoding?]

现在你可以通过许多其他方式获得该列表,但对于像我这样用几种不同语言编码的人,并且知道我想要做的事情的 sort ,但不一定是对Ruby方法,它很棒。我可以测试我认为我需要的方法,并看到它做对了。 。

还有很多其他有用的东西,例如调用你正在学习使用的库中的方法,以及检查它返回的东西类型。