私を信じてください、私はここSOで多くの記事と質問を読みました。しかし、満足のいく答えは見つかりませんでした。例として、リポジトリ パターンと単体テストに関するMatt Robert のチュートリアルを取り上げます。
わかりません..両方のリポジトリにまったく同じクエリロジックが含まれていますか? そのように見えますが、もしそうなら、それはどのように有用なパターンですか? これは、偽のリポジトリでクエリを変更するたびに、実際のリポジトリでクエリ ロジックを変更する必要があることを意味します。これは、PITA と問題のレシピのように聞こえます。
クエリを1 つのメソッドに保持し、そのメソッドをテストしたいと思います。後で思いついたのですが、次のようにできます。
//Student can be from the db or a fake list
public person GetStudent(IEnumerable<Student> students,int studentid)
{
return students.FirstOrDefault(s =>s.PersonId ==studentid);
}
//unit test
Assert.IsNull(GetStudent(fakeStudentList, -1))
//actual code
var student = GetStudent(entities.students,-1)
上記を模倣するパターンはありますか?もしそうなら、それは何ですか?それとも、実際にリポジトリ パターンがどのように機能するのでしょうか? もしそうなら、リポジトリ パターンがコードを複製しているように感じるのはなぜですか?
また、努力.. この恐ろしい例を見てください:S?