1

TDD を介して Entity Framework Code First コードを記述する方法を理解しようとしています。過去に Ruby On Rails で使用していたようなテスト データベースがないため、難しいと感じています。おそらく、例で説明する方が簡単です:

現在私は持っています:

public interface IMyContext
{
    IDbSet<UserProfile> Users { get; set; }
}

public class UserModel
{
    IMyContext myContext;

    UserModel(IMyContext myContext) 
    {
       this.myContext = myContext;
    }

    UserProfile GetUser(int id)
    {
       return myContext.Users.Where(u => u.id == id);
    }
}

データベースを実行せずに UserModel コードをテストする方法がわかりません。MyContext をモックできることは承知していますが、コード myContext.Users.Where ... には複雑なモックが含まれる可能性があります。コードの構造が間違っていますか? テスト データベースがなくてもモデルのテストを作成するにはどうすればよいですか? または、コンテキストを偽造する必要がありますか?

ありがとう!

4

1 に答える 1

0

コードをコア コンポーネントに分割すると、コンテキストのUsersプロパティをモックするだけでよいことがわかります。その後、 Where は実際にはIEnumerableオブジェクトに対して機能する単なる静的メソッドです

var users = myContext.Users;
var returnEnumerable = Enumerable.Where(users, u=>u.id == id);
return returnEnumerable

したがって、 が呼び出されたときに作成し.Usersたものを返すような方法でコンテキストをモックするだけですIDbSet<UserProfile>

于 2012-07-11T17:06:57.923 に答える