Warning: fopen(/tmp/SghXTngBZPli-hDC9q7.tmp): failed to open stream: Disk quota exceeded in /home/executea/public_html/blog/wp-admin/includes/class-wp-filesystem-ftpext.php on line 139
Warning: unlink(/tmp/SghXTngBZPli-hDC9q7.tmp): No such file or directory in /home/executea/public_html/blog/wp-admin/includes/class-wp-filesystem-ftpext.php on line 142
In the last post of specflow, we discussed about scoped bindings, in this post we will discuss how to work with custom types of .Net as parameters for step definitions in specflow.
Argument conversion
In Specflow, argument transformations are done effortlessly by itself from a feature to step definition, If we create an step with integer value, then specflow will deal with it automatically
Similarly specflow deals with .Net types automatically
Tables
Strings
Booleans etc
So, how to deal with custom arguments which specflow does not support out of the box ?
Step Argument transformation
There comes, Step argument transformation feature of specflow, which can be used to apply a custom conversion step for the arguments of the step definitions.
The step argument transformation is a method that provides a conversion from text (specified by a regular expression) or from a Table instance to an arbitrary .NET type.
To achieve step argument transformation
To achieve step argument transformation following rules needs to be followed
the return type of the transformation is the same as the parameter type
the regular expression (if specified) is matching to the original (string) argument
if there are multiple matching transformation available, a warning is provided in the trace and the first transformation is used
This is how a step argument transformation looks like in the code which we will discuss in the video below
Here is the complete video of the above discussion
Thanks for reading the post and watching the video!!!
Please leave your comments and let me know if there is anything I should update in this post.
Thanks,
Karthik KK
Post Author:
Karthik kk
One Reply to “Step argument transformation in Specflow”
Is it possible to do argument transformation for a field in a table using a Regular Expression?
For example,
I have a table like
| PromptDate | PromptCount | LastUpdatedTimeStamp |
| Today | 2 | 2 hours ago |
PromptDate and LastUpdatedTimeStamp are both Datetime types in my object.
I would want to convert ‘Today’ to Current Date, which is DateTime.Today and transform 2 hours ago to DateTime.Now.AddHours(-2).
Is it possible to do argument transformation for a field in a table using a Regular Expression?
For example,
I have a table like
| PromptDate | PromptCount | LastUpdatedTimeStamp |
| Today | 2 | 2 hours ago |
PromptDate and LastUpdatedTimeStamp are both Datetime types in my object.
I would want to convert ‘Today’ to Current Date, which is DateTime.Today and transform 2 hours ago to DateTime.Now.AddHours(-2).
How can this be done in Specflow ?