我读过 irb 在使用 Ruby 编程时的目的是帮助实时测试代码。在此之前我已经学习了 HTML 和 CSS,当时我可以通过在浏览器中打开页面并保存/刷新页面来测试我的代码。irb 是否与 Ruby 执行类似的功能?如果是这样,我是否认为在 irb(而不是浏览器)中测试 Ruby 代码的好处是 irb 可以更容易地将 Ruby 中的错误与 Javascript / HTML / 等中的错误区分开来?无论如何,Ruby 程序迟早会(理论上)在浏览器中运行,在我看来,程序员希望测试条件尽可能接近真实的用例环境。
2 回答
所以这个问题与测试有关,这是一个非常广泛的话题,但我会尝试从我的角度回答你的问题。
首先,在谈论 Ruby 和相关的网络技术时,我们必须在一个平台上达成一致。
1 - Ruby 并不是严格意义上的网络语言。这是一个巨大的误解。Ruby 不是 Ruby on Rails。因此,虽然现在大多数应用程序最终都在浏览器中,但这要归功于 RoR 而不是 Ruby。
Ruby 是一种万事通的语言,即。它可以做很多事情。脚本、网络、“普通应用程序”。如果您有问题,Ruby 作为一种语言很有可能解决它。
2 - IRB 是 Ruby 的 REPL(读取 eval 打印循环),或者更常见的解释器,它不是编译器。它代表交互式 RuBy 外壳。
那么关于你的问题:
你不使用 IRB 测试 pers,你使用 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 无关。
irb 适合我进行探索性测试,尝试单行代码。它还允许您使用 Ruby 的自省来探索可用的内容。我经常做的一件事是这样的:
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?]
现在您可以通过许多其他方式获得该列表,但是对于像我这样使用几种不同语言进行编码并且知道我想做的事情但不一定是正确的 Ruby 方法的人来说,这很棒。我可以测试我认为我需要的方法,并查看它是否正确。. .
还有很多其他有用的东西,例如调用您正在学习使用的库中的方法,并检查它返回的东西类型。