Unit testing 来自默认ASP.NETMVC4应用程序项目的单元测试AccountController

Unit testing 来自默认ASP.NETMVC4应用程序项目的单元测试AccountController,unit-testing,asp.net-mvc-4,simplemembership,Unit Testing,Asp.net Mvc 4,Simplemembership,我正在开发MVC4应用程序,并对创建一组控制器单元测试感兴趣。我所有尝试从AccountController单元测试方法的结果都与WebMatrix.WebData.WebSecurity: 要调用此方法,“Membership.Provider”属性必须是“ExtendedMembershipProvider”的实例。 我使用的是通过初始化SimpleMembership属性初始化的SimpleMembership提供程序 有人能提供如何正确地做这件事的指导吗?我将不再回答这个问题,因为这在评

我正在开发MVC4应用程序,并对创建一组控制器单元测试感兴趣。我所有尝试从AccountController单元测试方法的结果都与
WebMatrix.WebData.WebSecurity:

要调用此方法,“Membership.Provider”属性必须是“ExtendedMembershipProvider”的实例。

我使用的是通过初始化SimpleMembership属性初始化的
SimpleMembership
提供程序


有人能提供如何正确地做这件事的指导吗?

我将不再回答这个问题,因为这在评论中会变得非常难看。我所做的是在我的测试项目中添加一个成员资格提供者。我有一个自定义的成员资格提供程序,但在您的情况下,app.config将如下所示:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <system.web>
    <membership defaultProvider="SimpleMembershipProvider">
      <providers>
        <clear/>
        <add name="SimpleMembershipProvider"
             type="WebMatrix.WebData.SimpleMembershipProvider, WebMatrix.WebData"/>
      </providers>
    </membership>
  </system.web>
</configuration>

您可能会收到关于WebMatrix缺少参考的投诉。添加以下参考:

  • WebMatrix.Data
  • WebMatrix.WebData
将“复制到本地”设置为
true

然后确保调用
WebSecurity.InitializeDatabaseConnection
,就可以开始了


希望这能有所帮助。

我将不再回答这个问题,因为这在评论中会变得非常难看。我所做的是在我的测试项目中添加一个成员资格提供者。我有一个自定义的成员资格提供程序,但在您的情况下,app.config将如下所示:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <system.web>
    <membership defaultProvider="SimpleMembershipProvider">
      <providers>
        <clear/>
        <add name="SimpleMembershipProvider"
             type="WebMatrix.WebData.SimpleMembershipProvider, WebMatrix.WebData"/>
      </providers>
    </membership>
  </system.web>
</configuration>

您可能会收到关于WebMatrix缺少参考的投诉。添加以下参考:

  • WebMatrix.Data
  • WebMatrix.WebData
将“复制到本地”设置为
true

然后确保调用
WebSecurity.InitializeDatabaseConnection
,就可以开始了


希望这有帮助。

您是否在测试项目的app.config中定义了您的成员资格提供商?bas,您能否详细说明“定义”一词?我在web项目中使用默认实现。使用InitializeSimpleMembership属性初始化成员资格提供程序。一切都很完美,除了我无法对帐户控制器进行单元测试。您是否在测试项目的app.config中定义了您的成员资格提供程序?bas,您能否详细说明“定义”?我在web项目中使用默认实现。使用InitializeSimpleMembership属性初始化成员资格提供程序。除了我无法对Account controller进行单元测试之外,一切都很完美。或者,您可以包装成员资格提供程序,并延迟加载它,以便在单元测试中模拟它。不确定您试图实现什么,但成员身份可能是您希望在单元测试中排除的东西。我认为您关于“但成员身份可能是您希望在单元测试中排除的东西”的建议很好,但这是我单元测试的目的:)。无论如何,您建议在WebMatrix.WebData.WebSecurity.Login():System.Web.Security.FormsAuthentication.SetAuthCookie(字符串用户名、布尔值createPersistentCookie、字符串strCookiePath)中包含SimplemenerShip配置,但它现在失败了您遇到了一个特定的异常?或者您可以只包装成员资格提供程序,并延迟加载它,以便在单元测试中模拟它。不确定您试图实现什么,但成员身份可能是您希望在单元测试中排除的东西。我认为您关于“但成员身份可能是您希望在单元测试中排除的东西”的建议很好,但这是我单元测试的目的:)。无论如何,您建议在WebMatrix.WebData.WebSecurity.Login():System.Web.Security.FormsAuthentication.SetAuthCookie(字符串用户名、布尔值createPersistentCookie、字符串strCookiePath)中包含SimplementerShip配置,但现在失败了。您遇到了特定的异常吗?