Specflow - 步骤参数转换 - 正则表达式

时间:2018-02-10 19:51:08

标签: c# .net regex bdd specflow

我正在努力进行Step参数转换。 基本上我想做的就是改变每一步 ' ...类别页面'文本内部到CategoryPage对象

功能文件步骤如下所示

I have this step in feature file:
    Given a webrowser is at "Women's dresses category page"

步骤定义类中的方法如下所示:

 [Given(@"a webrowser is at ""(.* category page)""")]
        public void GivenAWebrowserIsAt(CategoryPage p0)
        {
            Console.WriteLine(p0.Title);
        }

我的论点Transformation类看起来像这个

namespace merino_bdd_test.Transformers
{
    [Binding]
    public class CategoryPageTransformer
    {
        [StepArgumentTransformation(@"(.* category page""")]
        public CategoryPage TransformIntoCategoryOage(string categoyPage)
        {                     

            return new CategoryPage(categoyPage, categoyPage);
        }
    }
}

我想要转换步骤的CategoryPage类看起来像这样

namespace merino_bdd_test.Utils
{
    public class CategoryPage
    {
        public string Title {get;set; }
        public string Link { get; set; }

        public CategoryPage(string title, string link)
        {
            this.Title = title;
            this.Link = link;
        }
    }
}

我收到消息:System.InvalidCastException:来自' System.String'的无效广播到' merino_bdd_test.Utils.CategoryPage'。

我做错了什么?

2 个答案:

答案 0 :(得分:0)

一旦指定了转换,就不需要再次在Given中指定参数。 请参阅此link

我尚未对此进行测试,但请尝试修改您的Given代码,如下所示:

[Given(@"a webrowser is at (.*)")]
public void GivenAWebrowserIsAt(CategoryPage p0)
{
    Console.WriteLine(p0.Title);
}

答案 1 :(得分:0)

问题是你在步骤参数转换的正则表达式中留下了"。 正确的属性应该是:

[StepArgumentTransformation(@"(.* category page)"]