小编Dan*_*ock的帖子

单元测试和nhibernate?

我想知道如何解决这个问题.我正在使用nhibernate和流利.

我有这样的域类

public class User
{
   public virtual int UserId {get; private set;}
}
Run Code Online (Sandbox Code Playgroud)

这似乎是做nhibernate的惯例,因为它会阻止人们设置和id,因为它是自动生成的.

现在问题出现在我进行单元测试时.

我把我所有的nhibernate代码都放在了一个我模拟出来的repo中,所以我只测试我的服务层.发生这种情况时会出现问题.

User user = repo.GetUser(email);
Run Code Online (Sandbox Code Playgroud)

这应该返回一个用户对象.

所以我想用moq来做这件事

repo.Setup(x => x.GetUser(It.IsAny<string>())).Return(/* UserObject here */)
Run Code Online (Sandbox Code Playgroud)

现在这是问题所在

我需要创建User对象并将其放在Return部分中.

所以我会做类似的事情

User user =  new User()
{
   UserId = 10,
}
Run Code Online (Sandbox Code Playgroud)

但这就是问题所在,我需要设置Id,因为我实际上在以后使用它来对某些集合做一些linq(在服务层,因为它没有击中我的数据库所以它不应该在我的仓库中)所以我需要设置它,但我无法设置它,因为它是一个私人集.

所以我该怎么做?我应该删除私人还是有其他方式?

c# nhibernate unit-testing moq fluent-nhibernate

9
推荐指数
1
解决办法
2563
查看次数

标签 统计

c# ×1

fluent-nhibernate ×1

moq ×1

nhibernate ×1

unit-testing ×1