J'ai deux problèmes.Tests de référence et de référence de persistance NHibernate Fluent
1. FNH ne teste pas correctement mes composants et je ne sais pas pourquoi.
System.ApplicationException: attendu 'DomainModel.Model.Publisher' mais a 'DomainModel.Model.Publisher' pour Propriété 'Editeur'.
[TestMethod]
public void CanCorrectlyMapBook()
{
new PersistenceSpecification<Book>(_session)
.CheckProperty(p => p.Name, "My Book")
.CheckProperty(p=> p.Id, 1)
.CheckProperty(p=>p.IncludesCDDVD, true)
.CheckProperty(p=>p.Isbn, "rder93q43949éwr")
.CheckProperty(p=>p.IsLoaned, false)
.CheckProperty(p=>p.Publisher, new Publisher(){PublisherHomepage = "www.google.de", PublisherName = "google"})
.VerifyTheMappings();
}
}
2. FNH ne teste pas ma référence correctement.
System.ApplicationException: attendu 'DomainModel.Model.Employee' mais a 'EmployeeProxyd6f94daa37c74be8b5ccccf40c5c23fa' pour 'LoanedBy' la propriété.
[TestMethod]
public void CanCorrectlyMapBook()
{
new PersistenceSpecification<Book>(_session)
.CheckProperty(p => p.Name, "My Book")
.CheckProperty(p=> p.Id, 1)
.CheckProperty(p=>p.IncludesCDDVD, true)
.CheckProperty(p=>p.Isbn, "rder93q43949éwr")
.CheckProperty(p=>p.IsLoaned, false)
.CheckReference(p=>p.LoanedBy, new Employee(){EMail = "",FirstName = "Alex", LastName = "Mueller"})
.VerifyTheMappings();
}
Mais quand je teste ce tout fonctionne "manuellement" bien.
ISession mysession = Helper.CreateSessionFactory(false, false).OpenSession();
Book myBook = new Book()
{
Author = "Hesse",
IncludesCDDVD = true,
DateOfIssue = DateTime.Now,
Isbn = "erwe0ri",
IsLoaned = true,
Name = "My Book new",
Publisher = new Publisher() { PublisherHomepage = "www.google.de", PublisherName = "google" },
Release = new Release() { ReleaseDate = DateTime.Now, ReleaseNumber = 1 },
LoanedBy = new Employee() { EMail = "", FirstName = "Alex", LastName = "Mueller" }
};
mysession.Save(myBook);
mysession.Close();
mysession.Dispose();
Je le vérifier en regardant dans le datbase ...
Les tests de PersistenceSpecification exécuté sur une base de données en mémoire SqlLite et mon manuel « test » va à l'encontre d'un Sql Server 2008.
Est-ce que quelqu'un d'entre vous a utilisé FNH et testé correctement une référence et un composant?
Je pense que cela n'aide pas, car les composants ne sont pas des entités, donc ils n'ont pas d'ID. J'ai implémenté la méthode object.Equals, mais il y a toujours le même message d'erreur pour mes composants et références. Mais ce serait bien si quelqu'un peut me montrer un exemple simple où l'on peut voir que l'API FNH fonctionne correctement. Pour moi, il semble que non. – Rookian
Je ne suis pas sûr pourquoi les composants n'étant pas des entités signifieraient que l'implémentation d'égales ou un equalcomparer n'aiderait pas. J'ai fourni un exemple simple pour une référence. – fostandy