gpt4 book ai didi

nhibernate - Fluent Nhibernate 映射的单元测试

转载 作者:行者123 更新时间:2023-12-03 09:48:47 27 4
gpt4 key购买 nike

我试图了解社区的其他成员如何测试他们的 Fluent Nhibernate 映射。所以假设我有以下映射:

    public UserHeaderMap()
{
Table("USER_HEADER");
Id(x => x.Id, "USER_ID");
Map(x => x.LoginName, "LOGIN_NAME");
Map(x => x.UserPassword, "USER_PASSWORD");
Map(x => x.UserEmail, "USER_EMAIL");
Map(x => x.UserLanguage, "USER_LANGUAGE");
Map(x => x.UserEnabled, "USER_ENABLED");

HasManyToMany(x => x.Groups)
.Table("USER_GROUP_COMPOSITE")
.ParentKeyColumn("USER_ID")
.ChildKeyColumn("GROUP_ID")
.Cascade.All()
.Inverse();
}

public class GroupHeaderMap : ClassMap<GroupHeader>
{
public GroupHeaderMap()
{
Table("GROUP_HEADER");
Id(x => x.Id, "GROUP_ID");
Map(x => x.Name, "GROUP_NAME");
Map(x => x.Description, "GROUP_DESCRIPTION");

HasManyToMany(x => x.Users)
.Table("USER_GROUP_COMPOSITE")
.ParentKeyColumn("GROUP_ID")
.ChildKeyColumn("USER_ID");
}
}

你会为这些编写哪些单元测试?你会使用 PersistenceSpecification 类来对这些进行单元测试吗?

编辑:

我想使用 SqlLite 但如果我没有从我的映射中生成我的架构怎么办?我还能以某种方式将我的模式加载到 SqlLite 中吗?另外我想知道测试 SqlLite 是否真的足够了。我们的产品至少需要在 MS SQL 和 Oracle 上运行。仅在 SqlLite 数据库上进行测试是否符合我的要求?您通常还会测试您映射的每个实体(构造函数、属性等)吗?

最佳答案

Fluent nhibernate 有 build-in testing methods .使用它们,您可以执行以下操作

[Test]
public void CanCorrectlyMapEmployee()
{
new PersistenceSpecification<Employee>(session)
.CheckProperty(c => c.Id, 1)
.CheckProperty(c => c.FirstName, "John")
.CheckProperty(c => c.LastName, "Doe")
.VerifyTheMappings();
}

这个测试将
  • 创建 Employee 实例
  • 将员工插入数据库
  • 将记录检索到一个新的 Employee 实例中
  • 验证检索到的 Employee 匹配原始

  • 这将检查属性映射。

    此外,我建议使用 SqlLite 并在内存中测试真实的 SQL 查询以验证级联规则。

    关于nhibernate - Fluent Nhibernate 映射的单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5560518/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com