2015-06-02 30 views
1

自动生成的名称两次,第一次的Watir Rspec的红宝石:老/前值比较新/编辑值

$name = generate_name 
    self.name = $name 

生产:$name is "Abc"

然后编辑$name是 “XYZ”。这会导致旧名称/旧名称不再可用/保存在应用程序中,并被新名称/编辑名称覆盖。

我现在必须比较同一个变量$ name的两个值以确保名称被编辑。

using expect($name).to_not eq($old_name) 

我不知道如何来上一首/旧名称保存到另一个变量$old_name覆盖它之前?

+1

究竟为什么你使用全局变量? (用$开始一个变量名使其成为Ruby中的全局变量)。使用['let'代替](https://www.relishapp.com/rspec/rspec-core/v/3-2/docs/helper-methods/let-and-let)。全球化是邪恶的。 – max

回答

0

在将$name更改为“Xyz”或测试相等性之前,您需要将$old_name设置为等于$name

事情是这样的:

$name = generate_name 
self.name = $name 
$old_name = self.name 

$name = Xyz 
self.name = $name 

using expect($name).to_not eq($old_name) 
+0

实际上相同的生成名称方法会执行两次以创建并编辑名称,因此如果在编辑过程中再次执行$ old_name = self.name,它也会覆盖它的值我也必须运行相同的方法两次,但已分配$ old_name仅限一次。 – btest

+0

它像高清create_name $ NAME = generate_name self.name = $名称 $ OLD_NAME = self.name $ NAME = generate_name self.name = $名结束......要指定价值$ OLD_NAME在全局方法外的generate_name方法 – btest