小编Bre*_*man的帖子

在Ruby中对受保护和私有方法进行单元测试的最佳方法是什么?

使用标准Ruby Test::Unit框架对Ruby中的受保护和私有方法进行单元测试的最佳方法是什么?

我敢肯定有人会说道,"你应该只测试公共方法;如果它需要单元测试,它不应该是一个受保护的或私有的方法",但我真的不想讨论这个问题.我有几个方法保护的或私有的良好和有效的原因,这些私人/受保护的方法是相对复杂的,并且在类的公共方法依赖于这些保护/私有方法正常工作,所以我需要一种方法来测试受保护/私有方法.

还有一件事......我通常将给定类的所有方法放在一个文件中,然后单元在另一个文件中测试该类.理想情况下,我希望将所有"受保护和私有方法的单元测试"功能实现到单元测试文件而不是主要源文件中,以保持主源文件尽可能简单明了.

ruby unit-testing private protected

132
推荐指数
8
解决办法
3万
查看次数

如何在Ruby中拯救eval?

我正在试图找出如何解决eval()在Ruby 1.8.6中使用代码时出现的语法错误.

我希望以下Ruby代码:

#!/usr/bin/ruby

good_str = "(1+1)"
bad_str = "(1+1"    # syntax error: missing closing paren

begin
    puts eval(good_str)
    puts eval(bad_str)
rescue => exc
    puts "RESCUED!"
end
Run Code Online (Sandbox Code Playgroud)

运行时产生以下结果:

2
RESCUED!
Run Code Online (Sandbox Code Playgroud)

相反,我得到的是:

2
eval_rescue.rb:8: (eval):1: compile error (SyntaxError)
(eval):1: syntax error, unexpected $end, expecting ')'
Run Code Online (Sandbox Code Playgroud)

似乎eval方法引发的SyntaxError正在eval中的某个地方被拯救,而我没有机会自己处理它.

任何人都知道如何获得我想要的行为(即,我的'rescue'条款从'eval'中捕获错误)?

ruby eval exception rescue

39
推荐指数
2
解决办法
2万
查看次数

哪个使用,eruby或erb?

eruby和erb有什么区别?什么考虑会促使我选择其中一个?

我的应用程序是为网络设备(路由器,负载平衡器,防火墙等)生成配置文件.我的计划是模拟配置文件,使用源文件中的嵌入式ruby(通过eruby或erb)来执行迭代生成路由器的所有接口配置块(这些块都非常相似,仅在标签中有所不同)和一个IP地址).例如,我可能有这样的配置模板文件:

hostname sample-router
<%=
r = String.new;
[
    ["GigabitEthernet1/1", "10.5.16.1"],
    ["GigabitEthernet1/2", "10.5.17.1"],
    ["GigabitEthernet1/3", "10.5.18.1"]
].each { |tuple|
    r << "interface #{tuple[0]}\n"
    r << "    ip address #{tuple[1]} netmask 255.255.255.0\n"
}
r.chomp
%>
logging 10.5.16.26
Run Code Online (Sandbox Code Playgroud)

当通过嵌入式ruby解释器(erb或eruby)运行时,会产生以下输出:

hostname sample-router
interface GigabitEthernet1/1
    ip address 10.5.16.1 netmask 255.255.255.0
interface GigabitEthernet1/2
    ip address 10.5.17.1 netmask 255.255.255.0
interface GigabitEthernet1/3
    ip address 10.5.18.1 netmask 255.255.255.0
logging 10.5.16.26
Run Code Online (Sandbox Code Playgroud)

ruby eruby erb

5
推荐指数
1
解决办法
3806
查看次数

标签 统计

ruby ×3

erb ×1

eruby ×1

eval ×1

exception ×1

private ×1

protected ×1

rescue ×1

unit-testing ×1