2013-09-30 70 views
2

我正在嘗試編寫Nancy項目的測試。我已經將測試剝離爲純粹的基礎知識,但我仍然看到了一個看似奇怪的結果。使用nUnit測試Nancy模塊在測試時失敗斷言HttpStatusCode

模塊:

public class HomeModule : BaseModule 
{ 
    public HomeModule(IUserMapper mapper) 
    { 
     Get["/"] = "Hello, world!"; 
    } 
} 

測試:

[Test] 
public void Home_Index_should_return_response_OK() 
{ 
    var result = GetBrowser().Get("/", with => with.HttpRequest()); 

    Assert.AreEqual(HttpStatusCode.OK, result.StatusCode); 
} 

斷言失敗,此消息:

預計:OK
不過是:OK

WTF?兩個結果的類型都是HttpStatusCode,值爲「OK」。如果我向它們添加.GetValue().ToString(),斷言通過但感覺變化hack-y和某些'代碼味道'。

起初我以爲這可能是與NUnit的和測試枚舉怪癖但是當我嘗試這樣的事:

var value = ActionTargets.Suite; 
Assert.AreEqual(ActionTargets.Suite,value); 

它傳遞的罰款。

回答

4

Argggh ....我已經ReShafted ..

我剛剛發現這個在我敢肯定我沒有把自己存在的文件的頂部。

using HttpStatusCode = System.Net.HttpStatusCode; 

在這裏要學習的一課:不要盲目依靠工具來爲你做你的想法。

+0

我認爲你可以關閉此問題或接受此答案 –

+0

不允許你接受自己的答案2天 – nathanchere

+1

感謝您的警示故事。您可以在ReSharper選項下取消選中「允許使用指令的別名」以防止發生這種情況。 – bonh