ここで同様の質問を見て、人々の回答がどこに向かっているのかの要点を理解していると思いますが、ソリューションのスタブリポジトリを使用して純粋な単体テストを作成する必要があるかどうかを確認する必要があります。
次の単体テスト (Microsoft の Fake Assemblies と MSTest を使用して作成) がある場合:
[TestMethod]
public void creating_user_returns_a_valid_id()
{
var userId = new Random().Next(1, 1000);
var userRepository = new StubIDataEntityRepository<User>
{
CreateT0 = x =>
{
return userId;
}
};
var user = new User();
var result = userRepository.CreateT0(user);
Assert.AreEqual(result, userId);
}
現在、私は単体テストについて勉強しており、純粋な単体テストは境界や責任を超えてはならないことを理解しています。したがって、スタブです。データベースでのユーザーの作成が実際に有効なユーザー ID になることをテストしたい場合は、統合テストを作成する必要があることを理解しています。では、正確には、ここで何をテストしているのでしょうか? 私は人々がアプリケーションロジックを言うことを知っていますが、それはすべて非常に有効ですが、確かに私はIDを作成し、偽のリポジトリにCreateメソッドからそのIDを返すように指示し、Createメソッドから返されたIDが同じ値であることを確認するテストを作成しています. 本質的に次のことのために多くの作業を行っているように感じます。
x = 1, y = 1, assert.areequal(x,y)!!
その答えは、開発者が TDD を介してコードを設計できるようにトレーニングすることでしょうか? そこにいる TDD の達人が私を啓発してくれるなら、それは大歓迎です!
敬具
ベン