nhibernateデータアクセスコードの下にあるカスタムasp.netメンバーシッププロバイダーを使用していますが、これは問題ありません。次に、テストを使用してこれらのメソッドを実行する必要があります。
これらの方法をどのようにテストすべきかを提案することに興味がある人はいますか?多分いくつかの標準を使用してテスト方法を説明するいくつかのリンクを提供することで?
これは私の最初の質問ですので、優しくしてください:)
nhibernateデータアクセスコードの下にあるカスタムasp.netメンバーシッププロバイダーを使用していますが、これは問題ありません。次に、テストを使用してこれらのメソッドを実行する必要があります。
これらの方法をどのようにテストすべきかを提案することに興味がある人はいますか?多分いくつかの標準を使用してテスト方法を説明するいくつかのリンクを提供することで?
これは私の最初の質問ですので、優しくしてください:)
データベースまたはサードパーティライブラリで何かを行うコードの単体テストに関しては、テストがコードのみをテストするように、これらの依存関係を切り離す必要があります。
たとえば、メンバーシッププロバイダーに単一のユーザーを追加するためのメソッドがある場合、テストしたいのは、この単一のメソッドのコードが正しく機能し、データベースが稼働していることや、このメソッドによって呼び出されたメソッドではないことです。仕事。データベースがオフラインの場合や、他のクラスのメソッド呼び出しが失敗した場合でも、単体テストは合格するはずです。
ここでモッキングが役立ちます。データコンテキストをモックアウトし、使用するメソッドを設定して、その応答を制御できるようにする必要があります。
メンバーシッププロバイダーで使用しているメソッドをよく見てください。それぞれが何をすべきですか?それはあなたが本当にテストしたい唯一のものです。このメソッドは、スタンドアロンユニットとして、私が期待している仕事をしますか?
メンバーシッププロバイダーをモックしてテストするのはかなり難しいので、個人的には気にしません。ただし、私が行うことは、すべてのメンバーシップコードを簡単にテストできるクラスに配置することです。
私のカスタムプロバイダーのほとんどは次のようになります。
public class CustomMembershipProvider : MembershipProvider
{
private readonly IUserService _userService;
public ButlinsMembershipProvider()
{
_userService = DI.Resolve<IUserService>();
}
public override bool ValidateUser(string username, string password)
{
return _userService.Authenticate(username, password);
}
}
この例では、ユーザーサービスの動作を検証するための統合テストを作成します。私はプロバイダーをテストしません。