2009-06-24 151 views
1

我有一個測試,需要我使用身份驗證來檢查,看看用戶是否已執行其任務之前登錄和身份驗證。身份驗證可編程登錄c#

我是否可以從單元測試中設置身份驗證,以愚弄/嘲笑主應用程序中的身份驗證以認爲您已被授權並登錄?

回答

2

我會在這種情況下做的是有一個方法,需要一個IIdentity實例。然後,您可以使用任何嘲弄的框架(如犀牛嘲笑),以嘲笑的IIdentity,以確保「用戶」登錄或者沒有登錄

public void DoSomething(IIdentity identity) 
{ 
    if(identity.IsAuthenticated) ... 
} 

,然後你的單元測試會是什麼樣子。

[Test] 
public void Test() 
{ 
    var mockery = new MockRepository(); 
    IIdentity identity = mockery.DynamicMock<IIdentity>(); 

    //perform your test logic here 
} 
+0

是的,我可以看到你是如何走近這個,這個問題我使用LINQ to SQL和DoSomething的()將不會允許任何參數,因爲它是: partial void OnCreated() { – Coppermill 2009-06-26 07:37:39

0

一個解決方案是讓測試機器上的web.config文件擁有authorization元素設置爲允許所有用戶。這假定您的測試機器和生產機器具有不兼容的Web配置(即,如果您無意中將未驗證的web.config上傳到生產機器,它應該會破壞所有內容,而不是僅僅刪除驗證)。

這可能被認爲是不好的做法...