組み込みの ASP.NET ユニット テスト フレームワークに不満を感じている人はいますか? 私が抱えている問題は、MVC3 アプリケーションで ASP.NET のメンバーシップ プロバイダーに接続してテストすることです。データベース接続が確立されていないか、アプリケーションを正常に実行したときとは異なるルール セットが設定されているようです。ここに 2 つのシナリオがあります。
1) 既存のユーザーを名前で検索しようとしています:
単体テスト -
[TestMethod]
public void RegisterTest()
{
AccountController target = new AccountController();
RegisterModel model = new RegisterModel() { UserName = "existinguser", Email = "email@test.com", Password = "Password", ConfirmPassword = "Password" };
actual = target.Register(model);
}
AccountController からのコード チャンク -
MembershipCreateStatus createStatus;
MembershipUserCollection members = Membership.FindUsersByName(model.UserName);
MembershipUser user = null;
if (members.Count > 0)
createStatus = MembershipCreateStatus.DuplicateUserName;
結果 - このコードにステップインすると、このユーザーがシステム内にいることがわかっているにもかかわらず、メンバー配列が空です。単体テスト アプリケーションでメンバーシップ ストアへの接続を確立するためのトリックはありますか? datasource 属性を使用しようとしましたが、成功しませんでした。
2) 新しいメンバーシップ アカウントを作成しようとしています: 単体テストは上記と同じですが、まだシステムにない新しいユーザーを渡しています。コントローラーにステップインして次の行に到達すると、「InvalidQuestion」のmembershipCreateStatusが表示されます。これは奇妙に思えます。なぜなら、このライブを実行するときはその問題はなく、このままの回線でアカウントを作成できるからです。
user = Membership.CreateUser(model.UserName, model.Password, model.Email, string.Empty, string.Empty, true, null, out createStatus);
よろしくお願いします。私は実際にこのテストを最初に実行しようとしていますが、組み込みのテスト フレームワークを使用するのが難しくなっています。確かに、すべての単体テストの DB に接続し (各テストに接続を提供するのではなく)、ブラウザーを介して行うのと同じアクションをシミュレートする方法があります。