2017-04-06 110 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 

都將匹配同樣的事情。所以要小心。