私は単体テストに慣れています。私が書いてきた.NETメンバーシップのいくつかを試そうとしています。Asp.netメンバーシップをテストする方法は?
私はVerifyUser
の方法をチェックして、ユーザーの資格情報が有効かどうかをチェックしています。
だから、これはどのように見えるかです:
public bool VerifyUser(string userName, string password)
{
bool valid = Membership.ValidateUser(userName, password);
return valid;
}
そして今、私は私のユニットテストを実行するたびに、それが失敗しました。私は正しい資格と物を渡していることを知っています。それから、私のテストプロジェクト(私の実際のプロジェクトと同じソリューションの下にある)に、接続文字列とファイルを持つweb.config
ファイルが必要になるかもしれないということが私に浮き彫りになりました。アプリケーションの設定ファイルは、アプリケーションライブラリプロジェクトである可能性があります。
実際のプロジェクトからweb.config
ファイルをコピーして1日と呼びますか?または、私はそれから部分を取っているだけですか?それとも私はちょうど離れている。
私のデータベースは、.netメンバーシップが自分のデータベースにマージされたカスタムデータベースを使用しています。私の設定ファイルでは、ManagerProviderとroleProviderを指定しなければなりませんでした。
これは私がこれ持って、私は(正確にはログインビュー)私のasp.net MVCのActionResultのいずれかの方法を持っている上で、私のユニットテストは、また後で
[Test]
public void TestVerifyUser()
{
AuthenticateUser authenitcate = new AuthenticateUser();
bool vaild = authenitcate.VerifyUser("chobo3", "1234567");
Assert.That(vaild, Is.True);
}
どのように見えるかです:
をFormsAuthentication.RedirectFromLoginPage(loginValidation.UserName、rememberMe);
これで、ユーザーが行うことのできる単体テストをどのように記述できますか。彼らがホームページから始まってログインページをクリックし、正常にログインしたとします。私は彼らがホームページにリダイレクトされることを望みます。
コードでその表現方法がわかりません。私はかなりRedirectFromLoginPage
が働いていると確信しています。私はログインのActionResult
メソッドで起こることが3つあるという事実をテストしています。
- ユーザーはログインし、どこから来たのかを返信します。
- ユーザーはログインに失敗し、
LoginView
に返され、エラーメッセージが表示されます。 - ユーザーは安全な場所に移動しようとしましたが、ログインページにリダイレクトされました。ログインに成功すると、ReturnUrlを介して安全なページにリダイレクトされます。
だから私は、これらがうまくいくかどうかを調べるためにテストをしたいと思っています。だから私は、ユーザーがホームページのように来て、彼らが後でそれにリダイレクトされるかどうかを確かめる必要があるのです。そして、彼らが安全なページから来た場合、後でリダイレクトされます。
私はまた、NUnit 2.5とVS2008 Proを使用しています。
これは私がテストしようとしているものです。私は、ユーザーが正当なものかどうかを確認しようとしているところです(if文)。私はそれをどのようにテストするかという手がかりはない。
public ActionResult Login(string returnUrl, FormCollection form, bool rememberMe)
{
LoginValidation loginValidation = new LoginValidation();
try
{
UpdateModel(loginValidation, form.ToValueProvider());
}
catch
{
return View("Login");
}
if (ModelState.IsValid == true)
{
bool valid = authenticate.VerifyUser(loginValidation.UserName, loginValidation.Password);
if (valid == false)
{
ModelState.AddModelError("frm_Login", "Either the Password or UserName is invalid");
}
else if (string.IsNullOrEmpty(returnUrl) == false)
{
/* if the user has been sent away from a page that requires them to login and they do
* login then redirect them back to this area*/
return Redirect(returnUrl);
}
else
{
FormsAuthentication.RedirectFromLoginPage(loginValidation.UserName, rememberMe);
}
}
return View("Login");
}
申し訳ありませんが、私は私はモック読ん 「コンフィギュレーション・アプローチを超える大会」を理解していない。同様に少し冗長、リポジトリおよびサービスのインタフェースが何かを見て可能性がある場合
。具体的には、私は持っている本。そのようなものを使って何かをするのか? このリンクが見つかりましたが、Nunitを使用していてMbUnitを使用しているので動作しません。 http://aspalliance.com/1590 – chobo2@ chobo2私はそれをどのように使用するかについて何かを書きます。模擬フレームワークは間違いなくインターフェイスを使用することに正当な理由があります。インタフェースを使用すると、良好なデカップリングが得られます。ただし、すべてのモッキングフレームワークでインターフェイスを使用する必要はありません。また、NUnitとMbUnitは多くの点で似ています。そのため、MbUnitで行われる処理は、NUnitとの関連が考えられます。いくつかの調査を行う価値があります。 – Joseph
ありがとうございました。私はまだ実際にインターフェイスを理解していないし、単体テストになると本当にそれらと一緒に考えていない。だからうまくいけば、これらのフレームワークの1つが少し楽になります。 どちらをお勧めしますか?私は "Moq"がlinq sytanxを使用しているので、もし私がlinqについてよく知らないので、それが私には良いとすれば、そのバットの権利があるかどうかはわかりません。 また、これらのフレームワークはnunitとどのように機能しますか?私のテストや何を実行するために、まだnunitを使用していますか? – chobo2