2017-04-06 230 views
1

我想写一个场景使用specflow我下载文件,并检查具有特定名称的文件是否正在下载。Specflow没有生成正确的步骤定义

Scenario Outline: Download excel files 

Given I am on the Shipping 

When I download a <downloadfile> file 

Then I should be able to download the file. 

Examples: 

| downloadfile | 

| xyz    | 

| abc    | 

当我生成以下我steps.cs文件被生成步骤文件:在步骤定义

[When(@"I download a xyz file\.")] 

public void WhenIDownloadAXyzFile_() 

{ 
    ScenarioContext.Current.Pending(); 
} 

任何人能告诉我,为什么我没有收到(*)?它显示了步骤定义中的第一个示例内容。

+0

这真的很奇怪。我得到了同样的行为。解决方法是删除所有的数据('| downloadfile |'行下面的所有内容),然后它似乎正常工作。生成步骤定义后,将数据添加回来。 – tnw

+0

尝试添加单引号,即'' – Joel

+0

@ tnw-解决方法很好。我评论了数据并尝试生成步骤定义。谢谢.. :) – user1943608

回答

0

当步是纯文本,如:

When I download a xyz file 

没有什么,这个框架可以用它来确定“XYZ”是您要捕获的项目。

在它周围放置引号会让框架知道它是在步骤定义中捕获和使用的东西。

When I download a "xyz" file 

而且

When I download a 'xyz' file 

都将产生正确的步骤定义。在任何基于黄瓜的框架内,在步骤定义的正则表达式中使用(。*)是很危险的,因为模糊匹配。

例如,如果您想下载具有特定大小的文件,那么在未来的步骤定义中使用(。*)的位置会与其混淆。

When I download a jpeg file 

而且

When I download a 500kb jpeg file 

都将匹配同样的事情。所以要小心。