9

このシナリオをどのようにテストしますか?

NHibernate の調査を開始し、TDD で最初のバッシュを行いました。これまでのところ、私はそれを本当に楽しんでおり、クラスのマッピングに fluent-Nhibernate を使用しています。

しかし、PersistenceSpecification で VerifyTheMappings メソッドを使用することになると、私は行き詰まりを迎えているようです。

基本的に、Recipient と RecipientList の 2 つのクラスがあります。RecipientList クラスには、流暢な「HasMany」関係を持つ受信者へのマッピングがあります。

public class RecipientListMap : ClassMap<RecipientList>
{

    public RecipientListMap()
    {
        Id(x => x.ID);
        Map(x => x.ApplicationID);
        Map(x => x.Name);
        Map(x => x.IsDeleted);
        HasMany<Recipient>(x => x.Recipients).WithKeyColumn("RecipientListID").AsList().LazyLoad();
    }

}

ただし、テストで次のコードを使用すると:

private IList<Recipient> _recipients = new List<Recipient>()
        {
            new Recipient { FirstName = "Joe", LastName = "Bloggs", Email = "joe@bloggs.com", IsDeleted = false },
            new Recipient { FirstName = "John", LastName = "Doe", Email = "john@doe.com", IsDeleted = false },
            new Recipient { FirstName = "Jane", LastName = "Smith", Email = "john@smith.com", IsDeleted = false }
        };

        [Test]
        public void Can_Add_RecipientList_To_Database()
        {
            new PersistenceSpecification<RecipientList>(Session)
                .CheckProperty(x => x.Name, "My List")
                .CheckProperty(x => x.Columns, "My columns")
                .CheckProperty(x => x.IsDeleted, false)
                .CheckProperty(x => x.ApplicationID, Guid.NewGuid())
                .CheckProperty(x => x.Recipients, _recipients)
                .VerifyTheMappings();
        }

次のエラーが発生します。

failed: System.ApplicationException : Expected 'System.Collections.Generic.List`1[Project.Data.Domains.Recipients.Recipient]' but got 'NHibernate.Collection.Generic.PersistentGenericBag`1[Project.Data.Domains.Recipients.Recipient]' for Property 'Recipients'

リストを渡しているためにエラーが発生し、返されたリストが PersistentGenericBag であるため、エラーがスローされることがわかります。IListを渡すことができない場合でも、これをテストする方法がわかりませんか?

どんな助けでも大歓迎です。

4

1 に答える 1

8

愚かなことに、PeristenceSpecification で間違った方法を使用していました。

CheckProperty ではなく CheckList を使用する必要がありました。

当たり前!

于 2008-12-11T00:30:32.607 に答える