Używam Fluent NHibernate do mapowania aa klasę, która posiada kolekcję strun tak:Fluent NHibernate PersistenceSpecification nie można przetestować zbiór ciągów
public class Foo {
public virtual ICollection<string> Strings { get; set; }
}
public class FooMap : ClassMap<Foo> {
public FooMap() { HasMany(f => f.Strings).Element("SomeColumnName"); }
}
Kiedy piszę badanej jednostki przy użyciu klasy PersistenceSpecification
zawarte w pakiecie FNH, to nie:
[TestMethod]
public void CanMapCollectionOfStrings() {
var someStrings = new List<string> { "Foo", "Bar", "Baz" };
new PersistenceSpecification<Foo>(CurrentSession)
.CheckList(x => x.Strings, someStrings) // MappingException
.VerifyTheMappings();
}
to badanie rzuca NHibernate.MappingException: No persister for: System.String
dzwoniąc CheckList()
. Jednakże, jeśli próbuję utrzymywać obiekt samodzielnie, to działa dobrze.
[TestMethod]
public void CanPersistCollectionOfStrings() {
var foo = new Foo {
Strings = new List<string> { "Foo", "Bar", "Baz" };
};
CurrentSession.Save(foo);
CurrentSession.Flush();
var savedFoo = CurrentSession.Linq<Foo>.First();
Assert.AreEqual(3, savedFoo.Strings.Count());
// Test passes
}
Dlaczego test pierwszego urządzenia kończy się niepowodzeniem?
Nie wiem czy widzieliście to, ktoś doniósł podobny problem - http://groups.google.com/group/nhusers/browse_thread/thread/d9f68bd2048a8f60/e20398a71c9b79c2 – WorldIsRound