如何使用 nhibernate 对引用的属性进行单元测试

发布于 2024-11-26 13:22:28 字数 906 浏览 3 评论 0原文

如果我想对具有引用属性的实体进行单元测试,最佳实践是什么?

BlogEntry 通过外键引用 User 对象。现在我正在使用 session.Load 来避免异常,因为外键不能包含空值。

我可以以某种方式嘲笑这个吗?我不希望我的单元测试包含对数据库中“真实”用户的引用。

 public class BlogEntry {
            public virtual int ID {get;set;}
            public virtual User CreatedBy {get;set;}
            public virtual string Text {get;set;}
        }

我目前正在使用以下测试方法:

        [Test]
        public void Create_blog_entry()
        {
            using (var session = sessionFactory.OpenSession())
            using (var trans = session.BeginTransaction())
            {              
                var entry = new BlogEntry(){
                 Text = "Lorem ipsum",
                 CreatedBy = session.Load<User>(1)                 
                };

                session.Save(entry);
                trans.Rollback();
            }
        }

What's the best practice if I'd like to unit test an entity with a referenced property?

BlogEntry is referencing a User object by a foreign key. Right now I'm using session.Load to avoid an exception since the foreign key cannot contain nulls.

Can i Mock this somehow instead? I don't want my unit test to contain references to a "real" user in the db.

 public class BlogEntry {
            public virtual int ID {get;set;}
            public virtual User CreatedBy {get;set;}
            public virtual string Text {get;set;}
        }

I'm currently using the following test method:

        [Test]
        public void Create_blog_entry()
        {
            using (var session = sessionFactory.OpenSession())
            using (var trans = session.BeginTransaction())
            {              
                var entry = new BlogEntry(){
                 Text = "Lorem ipsum",
                 CreatedBy = session.Load<User>(1)                 
                };

                session.Save(entry);
                trans.Rollback();
            }
        }

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

眼前雾蒙蒙 2024-12-03 13:22:28
[Test]
public void Create_blog_entry()
{
    using (var session = sessionFactory.OpenSession())
    using (var trans = session.BeginTransaction())
    {
        var user = new User { Id = 1 };
        session.Save(user);

        var entry = new BlogEntry()
        {
            Text = "Lorem ipsum",
            CreatedBy = user
        };

        session.Save(entry);
        trans.Rollback();
    }
}
[Test]
public void Create_blog_entry()
{
    using (var session = sessionFactory.OpenSession())
    using (var trans = session.BeginTransaction())
    {
        var user = new User { Id = 1 };
        session.Save(user);

        var entry = new BlogEntry()
        {
            Text = "Lorem ipsum",
            CreatedBy = user
        };

        session.Save(entry);
        trans.Rollback();
    }
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文