我想知道如何解决这个问题.我正在使用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(在服务层,因为它没有击中我的数据库所以它不应该在我的仓库中)所以我需要设置它,但我无法设置它,因为它是一个私人集.
所以我该怎么做?我应该删除私人还是有其他方式?