C# 为什么在测试模拟单元时返回实体框架的空存储库实现
hi iam与ef一起使用模拟单元测试 当测试生成我的测试失败时,当调试测试我得到以下错误 System.ArgumentNullException:'值不能为null。' [测试类] 公共类角色测试2 {C# 为什么在测试模拟单元时返回实体框架的空存储库实现,c#,asp.net-core,mocking,C#,Asp.net Core,Mocking,hi iam与ef一起使用模拟单元测试 当测试生成我的测试失败时,当调试测试我得到以下错误 System.ArgumentNullException:'值不能为null。' [测试类] 公共类角色测试2 { private Mock\u Mock存储库; 私人Iuser服务(u服务);; 模拟工作; 模拟安全服务; 模拟制图器; 名单所列国家; [测试初始化] 公共无效初始化() { _mockRepository=newmock(); _mockUnitWork=新建Mock(); _mapp
private Mock\u Mock存储库;
私人Iuser服务(u服务);;
模拟工作;
模拟安全服务;
模拟制图器;
名单所列国家;
[测试初始化]
公共无效初始化()
{
_mockRepository=newmock();
_mockUnitWork=新建Mock();
_mapper=newmock();
_ISecurityAuthorizationService=new Mock();
_service=new AdminCentral.NetCore.ServiceLayer.EFServices.UserService(\u mockUnitWork.Object、\u mapper.Object、\u isecurityauthorizationservice.Object);
//_service=new UserService(_mockUnitWork.Object,_mockRepository.Object);
listCountry=新列表(){
新用户(){IdCode=1,Name=“US”},
新用户(){IdCode=2,Name=“India”},
新用户(){IdCode=3,Name=“俄罗斯”}
};
}
[测试方法]
公共无效国家/地区
{
//安排
_mockRepository.Setup(x=>x.count(10)).Returns(listCountry);
//表演
列表结果=_service.count(10)作为列表;
//断言
Assert.IsNotNull(结果);
Assert.AreEqual(3,results.Count);
}
这是我的代码层Servic
我肯定返回空的IUnitof实体
public class UserService : BaseService, IUserService
{
#region Fields
private readonly IUnitOfEntity _iUnitOfEntity;
private readonly DbSet<User> _users;
private readonly IMapper _mapper;
private readonly ISecurityAuthorizService _iSecurityAuthorizService;
#endregion
public UserService(IUnitOfEntity unitOfEntity, IMapper mapper, ISecurityAuthorizService isecurityauthorizservice)
{
_iUnitOfEntity = unitOfEntity;
_users = _iUnitOfEntity.Set<User>();
_mapper = mapper;
_iSecurityAuthorizService = isecurityauthorizservice;
}
public IList<User> count(int id)
{
return _users.Where(x => x.UserId == id).ToList();
}
公共类UserService:BaseService、IUserService
{
#区域字段
私有只读IUnitof Entity(IUnitof Entity);
私有只读数据库集用户;
专用只读IMapper\u映射器;
专用只读ISecurityAuthorizationService _ISecurityAuthorizationService;
#端区
公共用户服务(IUnitOfEntity unitOfEntity、IMapper映射器、iSecurityAuthorization服务iSecurityAuthorization服务)
{
_i实体单位=实体单位;
_用户=_iUnitOfEntity.Set();
_映射器=映射器;
_ISecurityAuthorizationService=ISecurityAuthorizationService;
}
公共IList计数(整数id)
{
返回_users.Where(x=>x.UserId==id.ToList();
}
调用UserService的构造函数中的
\u iunitof entity.Set(),但是,此方法未被模拟,将根据实现引发异常或返回null。
您可能需要添加一个模拟实现,该实现返回一个用户列表
//Arrange
_mockRepository.Setup(x => x.count(10)).Returns(listCountry);
_mockUnitWork.Setup(x => x.Set()).Returns(listUsers);
//Arrange
_mockRepository.Setup(x => x.count(10)).Returns(listCountry);
_mockUnitWork.Setup(x => x.Set()).Returns(listUsers);