2016-09-06 3 views
0

Я столкнулся с сценарием, когда мне нужно отправить массив целых чисел в качестве параметра из файла функций specflow. Я мог бы использовать таблицы, которые я не хочу делать, как я отправляю в виде строки [] или col []. Если я передать параметр в виде строкиКак правильно использовать StepArgumentTransformation в Specflow (BDD)?

например: Учитывая, установите значение как «470,471,472,472»

и получить его и не делится на файл определения шага. Насколько отличается StepArgumentTransformation от вышеуказанного сценария? Есть ли другая польза в использовании преобразования аргументов шага. Я понимаю, что мы можем конвертировать XML, Date или любой объект. Почему мы должны использовать переход к трансформации?

ответ

2

Надеюсь, я правильно понял вопрос.

Specflow поддерживает некоторые автоматическое преобразование из коробки, так что такие вещи, как преобразование в Date, Double, int и т.д. и т.д., и он делает это по умолчанию, так как нет никакой двусмысленности о них. Вы можете легко преобразовать строку в double или Date, так как вы знаете используемый язык.

Почему не поддерживается преобразование в массивы? Я полагаю, что это может быть, но есть некоторая двусмысленность. Каким должен быть разделитель списка? запятая? Что относительно локалей, которые используют это как разделитель между всей и дробной частью числа?

Таким образом, предоставление реализации по умолчанию чего-либо, преобразующего список в int[], или IEnumerable<int> может быть возможным, но это может привести к тому, что некоторые люди спрашивают, почему он не работает для них, когда они использовали ☃ в качестве разделителя списков.

Лучше оставить вещи с двусмысленностью отдельным лицам для реализации, а не угадать наилучшую реализацию.

Необходимая для вас StepArgumentTransformation очень проста в написании и может быть включена в сборку внешних шагов, если вы хотите поделиться ею между многими проектами.

Так, чтобы ответить на ваши многочисленные вопросы:

Это не совсем по-другому, он просто инкапсулирует его в одном месте, что является хорошей практикой, которая является преимуществом.

Да, вы можете конвертировать любой объект.

Вы не должны использовать StepArgumentTransformation, многие люди не делают, но ИМХО они делают вашу жизнь намного проще

+0

Я реализован без использования StepArgumentTransformation, сама Specflow преобразует строку, целочисленное параметр из художественного файла. Я не пробовал StepArgumentTransformation во внешней сборке шагов и, как правило, тоже. Я даю вам попытку и дам вам знать. Спасибо за ваше объяснение и ценное время. :) – karthikR

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