Comment tester le NHibernate FetchMode.Eager correctement?
-
06-07-2019 - |
Question
Y a-t-il un moyen d'écrire un test d'intégration pour vérifier que FetchMode.Eager fonctionne correctement? Je veux vérifier que ça ne va pas dans la base de données quand je récupère MySubObject.
Le code:
public MyObject GetEager(string name)
{
return Session
.CreateCriteria(typeof(MyObject))
.SetFetchMode("MySubObject", FetchMode.Eager)
.Add(Restrictions.Eq("Name", name))
.UniqueResult<MyObject>();
}
La solution
Vous pouvez également utiliser NHibernateUtil.IsInitialized
... comme expliqué dans cet article
http://nhibernate.info/doc/howto /various/lazy-loading-eager-loading.html
Autres conseils
Que diriez-vous de quelque chose comme ça;
MyObject testObject = new MyObject();
testObject.GetEager("a name");
testObject.Session.Close();
Assert.AreEqual(testObject.MySubObject.Id, 3425);
En fermant la session puis en tentant d'accéder à l'objet associé si celui-ci n'est pas chargé avec impatience, une exception sera émise. Inversement, NHibernate ne tentera pas d'accéder à la base de données et ne lèvera donc pas l'exception.
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow