2012-04-08 26 views
3

我如何使用?:MSpec測試路由時,是否可以將URL字符包含在MSpec測試名稱中?

Scenario: Navigation to homepage 
    When I navigate to /Guestbook 
    Then I should be on the guestbook page 

SpecFlow讓這樣的事情更容易表示以下情形,因爲我們可以把參數傳遞我們的規格:

[When(@"I navigate to (.*)")] 
public void WhenINavigateTo(string relativeUrl) 
{ 
} 

隨着MSpec,上下文/規範來自類的名稱,所以我不能使用任何特殊字符(如在URL中使用的那些字符)。

我想實現的是一個輸出,如:

Browsing the site, When I navigate to /guestbook 
¯ should go to the guestbook page 
Browsing the site, When I navigate to /news/article-slug 
¯ should go to the news article with matching slug 

回答

2

在上下文或MSpec規範中沒有真正的使用特殊字符的方法,這是以前從未需要的。我認爲你是我見過的唯一一個有說服力的理由在他們的規範中有一個真正的url路徑。一般來說,你會避免,但如果SEO專家正在閱讀你的規格報告,那麼我可以看到。您可能想要嘗試其他工具或向MSpec提交補丁,該補丁添加了對可覆蓋上下文或規範的字符串名稱的屬性的支持。

2

SpecFlow主要用於系統級的例子,而MSpec通常用於類級別的。

對於URL行爲和更多的技術細節,我傾向於使用類級別的示例,AKA單元測試。 MSpec非常適合這一點。例如,這描述了一個導航類,它提供的網址:

我的導航類應該提供可讀的,令人難忘的網址

考慮到與文章蛞蝓CAT-IN-A-樹
當我們問導航器的url
然後它應該是可讀的。

然後,您可以在該示例中檢查您的實際URL。

在更高層次上,嘗試根據系統向用戶提供的功能考慮場景。如果我是用戶,爲什麼我關心我可以使用該特定的URL作爲留言簿?爲什麼我首先要去留言簿? SpecFlow更適合這個級別。

我的留言應該告訴我誰在

鑑於鍵盤貓最近簽署當我去的留言
後來我應在列表中看到鍵盤貓的名字籤我的留言簿

現在你可以有場景導航到留言,但保留的細節用戶如何導航到方案的步驟裏的留言。您還可以看到,該場景沒有說明您是使用網頁,Windows應用程序,手機還是實體書籍 - 這僅僅是您提供的功能。通常,像這樣的更高級別的場景將更易於維護,並幫助整個團隊專注於向用戶提供的價值。

+0

這裏的問題是,「它應該是可讀的」是不是真的不夠詳細,我的利益相關者(SEO專家等)。 MSpec是否允許您像使用[Subject]一樣覆蓋報告中的斷言文本?真的,我需要在報告中包含生成的網址。 – 2012-04-09 20:22:11

+0

據我所知......不過,我從未讓利益相關者對我的單元測試感興趣!你有沒有試過向他們演示一個演示呢?這可能比MSpec報告更令人信服...... – Lunivore 2012-04-10 07:07:24

相關問題