Wie TDD ich einen benutzerdefinierten Mitgliedschaftsanbieter und individuelle Mitgliedschaft Benutzer?
-
09-06-2019 - |
Frage
Ich brauche ein benutzerdefinierten Mitgliedschafts Benutzer und Anbieter für einen ASP.NET MVC-app zu erstellen, und ich bin auf der Suche TDD zu verwenden. Ich habe eine User-Klasse erstellt, die von der MembershipUser Klasse erbt, aber wenn ich versuche, es zu testen ich einen Fehler, dass ich nicht herausfinden kann. Wie kann ich ihm einen gültigen Provider-Namen geben? Muss ich es einfach web.config hinzufügen? Aber ich bin nicht einmal die Prüfung des Web-App an dieser Stelle.
[Versagen] UserTests.SetUp.UserShouldHaveMembershipUserProperties Testcase ‚UserTests.SetUp.UserShouldHaveMembershipUserProperties‘ fehlgeschlagen: Der Name Mitgliedschaftsanbieter angegeben ist ungültig. Parametername: provider System.ArgumentException Nachricht: Der Mitgliedschaftsanbieter angegebene Name ist ungültig. Parametername: provider Quelle: System.Web
Lösung
Die Konfiguration auf das Gerät Testprojekt Konfigurationsdatei hinzufügen, etwa wie folgt aussehen:
<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>
Andere Tipps
Ja, müssen Sie es in der Konfigurationsdatei konfigurieren (wahrscheinlich nicht web.config für eine Testbibliothek, aber app.config). Sie verwenden noch den Abschnitt und innerhalb dieses Abschnitts die Konfiguration zu tun. Sobald Sie, dass an der richtigen Stelle, können Sie Ihre Benutzer instanziiert und gehen über sie zu testen. An welcher Stelle Sie wahrscheinlich neue Probleme auftreten werden, die Sie als separate Fragen stellen sollte, denke ich.