我试图了解其他社区如何测试他们的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数据库上进行测试是否符合我的要求?您是否通常测试已映射的每个实体(构造函数,属性等)?
答案 0 :(得分:12)
流利的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();
}
此测试将
这将检查属性映射。
另外我建议使用SqlLite并在内存中测试真正的SQL查询来验证级联规则。