Comment puis-je utiliser un fournisseur d'adhésion personnalisé et un utilisateur d'adhésion personnalisé?
-
09-06-2019 - |
Question
Je dois créer un utilisateur et un fournisseur d'adhésion personnalisés pour une application ASP.NET MVC et je souhaite utiliser TDD. J'ai créé une classe User qui hérite de la classe MembershipUser, mais lorsque j'essaie de la tester, j'obtiens une erreur que je n'arrive pas à résoudre. Comment lui donner un nom de fournisseur valide? Dois-je simplement l'ajouter à web.config? Mais je ne teste même pas l'application Web à ce stade.
[échec] UserTests.SetUp.UserShouldHaveMembershipUserProperties TestCase 'UserTests.SetUp.UserShouldHaveMembershipUserProperties' failed: Le nom du fournisseur d'appartenance spécifié n'est pas valide. Nom du paramètre: providerName System.ArgumentException Message: Le nom du fournisseur d'appartenance spécifié n'est pas valide. Nom du paramètre: providerName Source: System.Web
La solution
La configuration à ajouter au fichier de configuration de votre projet de test unitaire ressemblerait à ceci:
<connectionStrings>
<remove name="LocalSqlServer"/>
<add name="LocalSqlServer" connectionString="<connection string>" providerName="System.Data.SqlClient"/>
</connectionStrings>
<system.web>
<membership defaultProvider="provider">
<providers>
<add name="provider" applicationName="MyApp" type="System.Web.Security.SqlMembershipProvider" connectionStringName="LocalSqlServer" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" requiresQuestionAndAnswer="false" maxInvalidPasswordAttempts="3" passwordAttemptWindow="15"/>
</providers>
</membership>
</system.web>
Autres conseils
Oui, vous devez le configurer dans votre fichier de configuration (probablement pas web.config pour une bibliothèque de test, mais app.config). Vous utilisez toujours la section et à l'intérieur de celle-ci pour effectuer la configuration. Une fois que vous avez cela en place, vous pourrez instancier votre utilisateur et le tester. À ce stade, vous rencontrerez probablement de nouveaux problèmes, que vous devriez poser en tant que questions séparées, je pense.