Помещение значений Faker Gem в хэш

Я пишу автоматизированные тесты, используя Cucumber, Capybara, WebDriver, SitePrism и Faker. Я новичок в этом и мне нужна помощь.

У меня есть следующие шаги..

Given (/^I have created a new active product$/) do
@page = AdminProductCreationPage.new
@page.should be_displayed
@page.producttitle.set Faker::Name.title
@page.product_sku.set Faker::Number.number(8)
click @page.product_save
@page.should have_growl text: 'Save Successful.'
end

When (/^I navigate to that product detail page) do
 pending
end

Then (/^All the data should match that which was initially entered$/) do
 pending
end

В config/env_config.rb я установил пустой хеш...

Before do
# Empty container for easily sharing data between step definitions

@verify = {}
end

Теперь я хочу хэшировать значение, сгенерированное Faker на шаге Given, чтобы я мог проверить, правильно ли оно сохранено на шаге When. Я также хочу ввести значение, сгенерированное подделкой в ​​приведенном ниже скрипте, в поле поиска.

@page.producttitle.set Faker::Name.title
  1. Как передать значения, сгенерированные подделкой, в @verify?
  2. Как мне получить это значение и вставить его в текстовое поле?
  3. Как мне получить это значение, чтобы убедиться, что значение сохранения равно значению, сгенерированному подделкой?

person Ponchooo    schedule 08.10.2014    source источник


Ответы (1)


<сильный>1. Как отправить значения, сгенерированные фейкером, в @verify has?

хеш – это просто словарь пар ключ-значение, который вы можете установить с помощью hash[key] = value.

Ключ может быть строкой @verify['new_product_name'] = Faker::Name.title

Ключ также может быть символом @verify[:new_product_name] = Faker::Name.title

Поскольку сгенерированное вами значение может использоваться несколько раз в определении шага (один раз для его сохранения в хэше @verify и один раз для установки значения поля), я лично предпочитаю сначала хранить его в локальной переменной и ссылаться на нее при необходимости. .

new_product_title = Faker::Name.title
@verify[:new_product_title] = new_product_title

<сильный>2. Как мне получить это значение и вставить его в текстовое поле?

Вы можете ссылаться на значения по их ключу. Итак, после того, как вы сохранили значение в хеше, вы можете сделать это @page.producttitle.set @verify[:new_product_name]

Или, если бы вы сохранили его в локальной переменной, как было предложено выше, вы бы просто сделали это

@page.producttitle.set new_product_name

<сильный>3. Как мне получить это значение, чтобы убедиться, что сохраненное значение равно значению, сгенерированному мошенником?

Точно так же вы можете утверждать, что значение поля равно тому, что вы сохранили в хеше. Примером может быть @page.producttitle.value.should == @verify[:new_product_name]

Соединяем все это вместе:

Given (/^I have created a new active product$/) do
  @page = AdminProductCreationPage.new
  @page.should be_displayed

  # Create a new title
  new_product_title = Faker::Name.title

  # Store the title in the hash for verification
  @verify[:new_product_title] = new_product_title

  # Set the input value to our new title
  @page.producttitle.set new_product_title

  @page.product_sku.set Faker::Number.number(8)
  click @page.product_save
  @page.should have_growl text: 'Save Successful.'
end

When (/^I navigate to that product detail page) do
   pending
end

Then (/^All the data should match that which was initially entered$/) do
  @page.producttitle.value.should == @verify[:new_product_title]
end
person Matt Metzger    schedule 09.10.2014