AccountController
をテストします。私はweb.configファイルを使用して設定CustomMembershipProvider
を使用したWebアプリケーションでメンバーシップを使用するときにASP.NET MVC 3認証をテストする方法
Membership.CreateUser(model.Email, model.Password, model.Email, null, null, true, null, out createStatus);
:問題は、Registerメソッドで、私は、ユーザーを作成するために、次の行を使用することです。私のユニットテストでは、会員資格クラスは標準SqlMembershipProvider
です。私のアプリで使っている私のCustomMembershipProvider
ではありません。
ユニットテストコンテキストでメンバーシップを設定するにはどうすればよいですか?私はaspネットがweb.configファイルを読んだ後にそれを設定するので、プログラムで設定することを意味します。
私はすでにユーザー管理データレイヤーをモックするためにインターフェイスを使用していますが、この場合はインターフェイスを回避する方法があると思っていました。単体テストのメンバーシップの模擬実装をセットアップできるようにする。このようなあなたのMVCアプリケーションのためにそれを実装する...
public interface IMembershipProvider
{
void CreateUser(string username, string password);
}
:
public void RegisterTest()
{
IUsersManager repository = new Tests.Data.UsersManager();
AccountController target = new AccountController(repository);
//be able to set Membership underlying provider
Membership.Provider = new MockMembershipProvider();
}
は 'AspDotNetMembershipProvider'は、インターフェイスを実装していないでしょうか? 'public class AspDotNetMembershipProviderのように:IMembershipProvider {...' – marapet
もちろん、それはすべきです。修正済み、ありがとう:) –
'Membership'クラスは静的ですが、基礎となるプロバイダはaspランタイムによって設定されています...また、私もそれを設定できると考えていました –