2011-08-23 60 views
1

我想知道如何嘲笑一個控制器是用MVC3中的[Authorize]屬性來裝飾的?我正在使用自定義成員資格提供程序我想測試一下,控制器是用這個屬性來裝飾的,而且你是被授權的,當你不是的時候會發生什麼。我正在使用Moq。任何好的建議呢?!模擬存在的授權屬性

更新: 我目前得到一個NullreferenceException說「對象引用未設置爲對象的實例」。這與前面提到的錯誤相同NullReferenceException while using Authorize Attribute

這與授權屬性有關。我在iis下運行,沒有使用卡西尼。有誰知道這是否與應用程序池和用戶權限有關。我已經爲授權屬性進行的測試在該問題得到解決之前無法正常工作。

也許還有其他一些測試Authorize屬性的方法嗎?非常感謝提前。

UPDATE2 因此,經過我提到的一個同事的廣泛研究和調試幫助,以解決與[授權]屬性的問題。它看起來好像這條線在web.config失蹤:

<modules runAllManagedModulesForAllRequests="true"> 

奇怪的是本作的另一位同事這是共享行李箱內或測試環境沒有造成問題。這隻對我本地造成了問題。這可能與GAC中的某些內容有關。總之現在所有的作品。

謝謝。

+0

你怎麼在你的測試執行?控制器操作?你如何執行它?你是直接從你的測試套件中作爲一個普通的方法調用它還是通過MVC基礎結構調用它? –

+0

好問題。我一直在關閉這個,並不確定如何去做。是控制器操作。我通過MVC基礎架構是實現它的「最佳」方式。或者你怎麼看?! – Tim

回答

1

我正是一個幾個月前寫了一篇博客文章:

http://thomasardal.com/unit-testing-attribute-decorations/

+0

這看起來基本上是我在找什麼。儘管希望不使用其他框架(Shoudly)。無論如何,我可以使用這種擴展方法。謝謝 – Tim

+0

您不需要使用應該爲了使用擴展方法。這兩者沒有任何聯繫。我正在寫的是,該方法受到Shoudly的啓發。您可以將代碼複製到您自己的源代碼並立即使用該方法。 – ThomasArdal

+0

對了:)。將嘗試並返回反饋。謝謝。 – Tim