2016-03-17 5 views
0

У меня есть два Feature-файла в моем проекте, где один шаг является общим в этих двух файлах, но мне нужно вызвать две разные функции определения Step в зависимости от файла, на котором эти шаги были написаны.Можем ли мы привязать один шаг огурца к двум различным методам в двух разных классах

у нас есть какие-либо настройки для этого?

ответ

0

Итак, если я правильно понял, у вас есть 1 линия в огурце, которая должна выполнять два разных метода? Насколько я знаю, это невозможно. Огурец будет продолжать говорить вам, что существует несколько методов с тем же именем. - Это то, что я получаю от твоего титула.

То, что я получаю от вашего объяснения, - это нечто иное. Таким образом, у вас есть 2 файла с общим шагом. Один файл функции получает свои шаги от classfile A, а другой файл свойств получает свои шаги от classfile B?

В этом случае вы можете расширить свои общедоступные классы, чтобы вы могли использовать любой код из любого файла класса в любом файле свойств.

+0

Nope Anand это совсем другое, у меня есть один шаг conman в обоих файлах, и я хочу выполнить метод в зависимости от сценария. Ex добавить 10 из Maths.feature должен выполнить форму метода MathsStepDef.java и добавить 10 из операции substract.feature должен выполнить метод из SubstractStepdef.java – VarunRaje

+0

Пожалуйста, поделитесь некоторым кодом, который описывает, что вы хотите. И помните, что Огурец найдет метод везде, где он определен. Два шага в одном сценарии вызовут два вызова метода. Эти методы могут быть определены в двух разных классах. –

0

Единственный способ, которым я мог подумать, что это будет возможно (но я не рекомендую его), - это определить некоторую переменную для отслеживания сценария, из которого вы работаете. Например, вы можете добавить тег в каждый из сценариев.

@some_tag 
    Scenario: This is scenario 1 
    Given I do this thing 

    @some_other_tag 
    Scenario: This is scenario 2 
    Given I do this thing 

, то вы можете создать крюк, который отслеживает

Before('@some_tag') do 
    @this = "foo" 
end 

Before('@some_other_tag') do 
    @this = "bar" 
end 

Тогда из вашего шага запуск кода в зависимости от значения @this вара.

Given(/^I do this thing$/) do 
    if @this.eql? "foo" 
    <do some code> 
    elsif @this.eql? "bar 
    <do something else> 
    else 
    <do other things> 
end 

Но действительно, в конце концов, что ... Вы просто должны иметь два различных действия

Given I do this Foo Thing 

и

Given I do this Bar Thing 

Это помогло бы лучше описать то, что тест на самом деле делает ,

Смежные вопросы