3

このソースによると、デフォルトのNHibernate DefaultDeleteEventListenerをオーバーライドしました:http://nhibernate.info/blog/2008/09/06/soft-deletes.html

ので、私は持っています

 protected override void DeleteEntity(
        IEventSource session,
        object entity,
        EntityEntry entityEntry,
        bool isCascadeDeleteEnabled,
        IEntityPersister persister,
        ISet transientEntities)
    {
        if (entity is ISoftDeletable)
        {
            var e = (ISoftDeletable)entity;
            e.DateDeleted = DateTime.Now;
            CascadeBeforeDelete(session, persister, entity, entityEntry, transientEntities);
            CascadeAfterDelete(session, persister, entity, transientEntities);
        }
        else
        {
            base.DeleteEntity(session, entity, entityEntry, isCascadeDeleteEnabled, persister, transientEntities);
        }
    }

NHIbernateセッションを構成せずに、このコードのみをテストするにはどうすればよいですか?

4

2 に答える 2

1

テストコードでイベントリスナーをサブクラス化し、DeleteEntityの保護された基本実装を呼び出すだけのDeleteEntityと同じシグネチャを持つパブリックメソッドを提供できます。他の依存関係をモックし、テスト可能なクラスのパブリックメソッドを呼び出し、DateDeletedが設定されていることを確認します。

于 2010-07-28T10:41:48.357 に答える
0

適切に構成されたセッションがないと、これをテストできないと確信しています。ただし、テストでダミーデータを使用してSQLiteなどを使用するようにNhibernateを構成することはできます。

于 2010-06-08T08:48:30.900 に答える