2011-03-15 71 views
2

我基本上具有控制器基類,其通過在url驗證令牌處理認證,例如控制器屬性:單元測試依賴於所請求的URL的參數(ASP.NET MVC)

http://example/Home/Index將未經驗證的

http://example/Home/Index?token=293029420932422823將被驗證

我想寫這個單元測試,但不知道如何去做。我有:

[TestMethod] 
    public void NonsecureConnection() 
    { 
     var controller = new EONSecureController(); 
     Assert.IsTrue(string.IsNullOrEmpty(controller.EONToken)); 
     Assert.IsTrue(controller.tokenMode == EONSecureController.EONTokenModeEnum.None); 
    } 

夠簡單。測試安全連接是我卡住的地方。

[TestMethod] 
    public void SecureConnection() 
    { 
     var controller = new EONSecureController(); 
     // What to put here? 
     Assert.IsTrue(!string.IsNullOrEmpty(controller.EONToken)); 
     Assert.IsTrue(controller.tokenMode==EONSecureController.EONTokenModeEnum.Client); 
    } 

我試着像各種辦法:

controller.RequestContext.RouteData.Values[Config.RawTokenName] = "12312342123"; 
controller.Request = new System.Web.HttpRequest("", "http://localhost/example", "token=2342342"); 
controller.Request.RawUrl = "http://localhost/example?token=234234234234234"; 

其中沒有工作由於種種原因的。是否有一種「正確」的方式來處理依賴於請求的特定URL的控制器的測試?

我已經看到了一些東西,在使用起訂量暗示,但我不能完全加入點......


注意: 請不要建議答案沿線的「不要這樣做認證,你應該{etc etc etc}來代替」)。這個例子是故意簡化的,以保持關注主要問題,這是如何開發單元測試。

回答

4

自己測試屬性 - 不是與控制器。

+0

屬性只是一個專門的類,編譯器可以識別並允許它進行修飾。 – 2011-03-16 00:48:09

+0

@FerrtallicA爲什麼它最終沒有幫助? – 2011-04-18 12:19:39