3

Moq とネイティブ VS テスト フレームワークを使用します。値が渡された再帰関数をテストしようとしています:

public bool AuthenticateByDomain(string domainName, string password, string username, string email)
    {

エンティティを見つけるために使用されます。

// look for an existent domain name.
var matchFound = this.FindDomainPasswordMatch(domainName, password);

見つかった場合は、既存のUserNameを探します(アカウントは既に存在します)。

        if (matchFound)
        {
            var account = this.GetByEmail(null, email);
            if (account != null)
            {

見つからない場合は、提供された電子メールとユーザー名に基づいてアカウントを作成します。

var uAccount = this.CreateAccount(username, password, email, domainName);

次に、(おそらく) への呼び出しGetByEmail()が満たされ、認証ブランチが呼び出される場所で、それ自体を再帰的に呼び出します。

Moq がリポジトリと対話する例をいくつか見つけましたが、特定の問題にアプローチする方法を正確に確認できませんでした - リポジトリが更新され、再帰が成功することをテストします。トップレベルで見つかった各メソッドを unit get できます。それで十分だと宣言して次に進みますか? これは永続性テストですか?

4

1 に答える 1

4

何かを簡単にテストできないという問題は、設計上の意思決定が不十分であることを示している可能性があります。その再帰が本当に必要かどうかを明確にしてください。

これら 2 つの呼び出しをCreateAccountandFindDomainPasswordMatchに分割し、設計的に分離する方が簡単ではないでしょうか。多分私はあなたの要点を完全には理解していませんが、再帰自体には実際の「再帰的」用途はないようです。重複したコードを使用した単なる「怠惰な」呼び出しです。これらのメカニズムをそれ自体から分離することをお勧めします。これにより、テストもはるかに簡単になり、これらのメソッドのテストに問題が発生することはありません。

お役に立てれば。

于 2013-03-01T12:34:28.563 に答える