如何在Ruby中显示该数字已增加

时间:2015-11-08 23:10:37

标签: ruby selenium cucumber watir rubymine

我有代码,当我点击一个按钮时,数字增加,我想确保数字增加,我能够看到数值已经改变,但无法显示它增加了1这是代码;

When(/^I click the create room button$/) do
  createpress = @browser.iframe(:id , 'iconsole-plugin-session_iframe__').button(:id , 'create_room_form_button')
  list = @browser.iframe(:id , 'iconsole-plugin-session_iframe__').div(:id , 'room_list')
  rooms = []

  list.as.each do | room |
    rooms << room.attribute_value('data-room-id')
  end

  roomvalue = rooms.size.to_i
  puts roomvalue

  Watir::Wait.for_condition(10 , 2 , "Waiting for button to be present") {
    createpress.present?
  }
  createpress.click
end

Then(/^the lobby will update to show the new room$/) do
  list = @browser.iframe(:id , 'iconsole-plugin-session_iframe__').div(:id , 'room_list')
  rooms = []

  list.as.each do | room |
    rooms << room.attribute_value('data-room-id')
  end

  puts rooms.size.to_i
end

我只是不确定如何让2个输出显示我正在寻找的信息(增加1)

1 个答案:

答案 0 :(得分:0)

您需要设置一个实例值,以便逐步保持房间大小。 (注意:在ruby-Cucumber中,一切都在World内部运行,因此这是您设置实例变量的对象,并且您的World在stepdef中保持不变)。

作为奖励,您可以使用rspec的期望gem来提供更自然的英语编写代码方式。

When(/^I click the create room button$/) do
  ..snip..
  @current_rooms = rooms
  ..snip..
end

Then(/^the lobby will update to show the new room$/) do
  ..snip..
  updated_room_list = rooms
  updated_room_list.should have(@current_rooms.size + 1).rooms
  ..snip..
end

以下是rspec's collection.should have

的信息

注意:如果您并行运行测试套件并进行其他添加或删除房间的测试,则您的测试可能会遇到问题。最好确保新房间的名称出现在列表中并且房间数量是正确的,而不是检查是否有比上次更多的房间。