Я пытаюсь проверить создание пользователя. Из моего теста я вызываю следующее:
MembershipCreateStatus status;
// _session is my current NHibernate session.
var mmp = new MyMembershipProvider(_session);
mmp.CreateUser(username, password, "something@example.com", "", "", true, Guid.NewGuid(), out status);
В методе CreateUser
он заходит так далеко:
var user = new MembershipUser(Name, username, providerUserKey, email, passwordQuestion, passwordAnswer, isApproved, false, DateTime.Now, DateTime.Now, DateTime.Now, DateTime.Now, DateTime.Now);
... до выдачи этого исключения:
The membership provider name specified is invalid.
Parameter name: providerName
У меня установлено имя на MyMembershipProvider
, и в Web.config у меня есть это:
<add name="OnyxMembershipProvider" type="System.Web.Security.SqlMembershipProvider" connectionStringName="ApplicationServices"
enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false"
maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10"
applicationName="/" />
А также, моя строка подключения:
<add name="ApplicationServices"
connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|aspnetdb.mdf;User Instance=true"
providerName="System.Data.SqlClient" />
Теперь я предполагаю, что проблема в том, что мои тесты создают базу данных SQLite, и web.Config пытается поразить мою базу данных SqlServer, но я не знаю, как действовать.
Возможно, вы захотите смоделировать провайдера членства. Ваши модульные тесты должны тестировать ваш код, а не код Microsoft.
Вот некоторая информация об использовании Moq для имитации поставщика членства: