これは私の統合テストコードです:
// Arrange
var user = new User() { FirstName = "test", UserId = 4, LastName = "test", RegisteredAt = new DateTime(2013, 02, 02) };
var repository = new GenericRepository<User>(_context);
// Act
repository.Add(user);
_context.SaveChanges();
// Assert
Assert.IsNotNull(user.UserId);
UserIdがnull許容整数であってはならないため、UserIdを使用してIsNotNullテストを実行している人を見たことがあります。
作成してデータベースに追加したエンティティが同じであることを確認するために、何をどのようにテストしますか?
しますか:
var dbUser = _context.Users.First(u => u.FirstName == "test")
その後
Assert.AreEqual(dbUser.FirstName,user.FirstName)
これは、作成したすべてのプロパティに対してですか?
アップデート
私はもう少しグーグルで検索しましたが、エンティティがデータベースに挿入されたかどうかをテストするために、人々は実際にさまざまで奇妙なことをしています。
Assert.That(1, Is.EqualTo(context.Roads.Count()));
Assert.assertNotNull(repo.findUserById(user.getId()));
ICustomer retainedCustomer = repository.
Customers.
Where(q => q.CustomerName == expectedCustomerName).
FirstOrDefault();
Assert.IsNotNull(retainedCustomer);
最初のアサーションは、道路と呼ばれる挿入されたエンティティをテストしていません。ロードテーブルのカウントをチェックしています... 2番目と3番目のアサーションは、ログイン時にリポジトリメソッドを使用しているため、後で失敗する可能性があるため、私の意見では間違っているようです。挿入された顧客/ユーザーを取得するためのテスト。
どう思いますか?