2011-08-23 57 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