parent
a1d43653fb
commit
75666e57c6
|
@ -41,10 +41,6 @@ namespace IRaCIS.Core.Infra.EFCore
|
||||||
//_configuration = configuration;
|
//_configuration = configuration;
|
||||||
}
|
}
|
||||||
|
|
||||||
public IRaCISDBContext()
|
|
||||||
{
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
//比数据库上下文构造函数先执行 不能构造函数注入的方式使用配置文件
|
//比数据库上下文构造函数先执行 不能构造函数注入的方式使用配置文件
|
||||||
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
|
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
|
||||||
|
|
|
@ -47,11 +47,7 @@ namespace IRaCIS.Core.Infra.EFCore
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public Repository(IRaCISDBContext dbContext )
|
|
||||||
{
|
|
||||||
|
|
||||||
_dbContext = dbContext;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
#region 异步 EF 跟踪 添加
|
#region 异步 EF 跟踪 添加
|
||||||
|
|
|
@ -13,9 +13,8 @@
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="6.0.8" />
|
||||||
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.0.0" />
|
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.0.0" />
|
||||||
<PackageReference Include="Moq" Version="4.18.4" />
|
|
||||||
<PackageReference Include="Moq.EntityFrameworkCore" Version="7.0.0.2" />
|
|
||||||
<PackageReference Include="NUnit" Version="3.13.2" />
|
<PackageReference Include="NUnit" Version="3.13.2" />
|
||||||
<PackageReference Include="NUnit3TestAdapter" Version="4.1.0" />
|
<PackageReference Include="NUnit3TestAdapter" Version="4.1.0" />
|
||||||
<PackageReference Include="coverlet.collector" Version="3.1.0">
|
<PackageReference Include="coverlet.collector" Version="3.1.0">
|
||||||
|
@ -113,8 +112,4 @@
|
||||||
<Folder Include="TT_Template\Services_New\" />
|
<Folder Include="TT_Template\Services_New\" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
|
||||||
<ProjectReference Include="..\IRaCIS.Core.Infra.EFCore\IRaCIS.Core.Infra.EFCore.csproj" />
|
|
||||||
</ItemGroup>
|
|
||||||
|
|
||||||
</Project>
|
</Project>
|
||||||
|
|
|
@ -1,157 +1,18 @@
|
||||||
using AutoMapper;
|
//using NUnit.Framework;
|
||||||
using IRaCIS.Core.Domain.Models;
|
|
||||||
using IRaCIS.Core.Domain.Share;
|
|
||||||
using IRaCIS.Core.Infra.EFCore;
|
|
||||||
using Microsoft.EntityFrameworkCore;
|
|
||||||
using Microsoft.Extensions.Localization;
|
|
||||||
using Moq;
|
|
||||||
using NUnit.Framework;
|
|
||||||
using NUnit.Framework.Interfaces;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using System;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
using Microsoft.EntityFrameworkCore.Metadata;
|
|
||||||
using Moq.EntityFrameworkCore;
|
|
||||||
using System.Xml;
|
|
||||||
using SharpCompress.Common;
|
|
||||||
|
|
||||||
namespace IRaCIS.Core.Test
|
//namespace IRaCIS.Core.Test
|
||||||
{
|
//{
|
||||||
[TestFixture]
|
// public class Tests
|
||||||
public class RepositoryTests
|
// {
|
||||||
{
|
// [SetUp]
|
||||||
private Repository<User> _userRepository;
|
// public void Setup()
|
||||||
private Mock<IRaCISDBContext> _mockDbContext;
|
// {
|
||||||
private Mock<DbSet<User>> _mockSet;
|
// }
|
||||||
private List<User> _users;
|
|
||||||
|
|
||||||
[SetUp]
|
// [Test]
|
||||||
public void Setup()
|
// public void Test1()
|
||||||
{
|
// {
|
||||||
// Create a mock DbContext with an in-memory list of users
|
// Assert.Pass();
|
||||||
_users = new List<User>
|
// }
|
||||||
{
|
// }
|
||||||
new User { UserName = "Alice" },
|
//}
|
||||||
new User { UserName = "Bob" },
|
|
||||||
new User { UserName = "Charlie" }
|
|
||||||
};
|
|
||||||
_mockDbContext = new Mock<IRaCISDBContext>();
|
|
||||||
_mockSet = new Mock<DbSet<User>>();
|
|
||||||
_mockSet.As<IQueryable<User>>().Setup(m => m.Provider).Returns(_users.AsQueryable().Provider);
|
|
||||||
_mockSet.As<IQueryable<User>>().Setup(m => m.Expression).Returns(_users.AsQueryable().Expression);
|
|
||||||
_mockSet.As<IQueryable<User>>().Setup(m => m.ElementType).Returns(_users.AsQueryable().ElementType);
|
|
||||||
_mockSet.As<IQueryable<User>>().Setup(m => m.GetEnumerator()).Returns(_users.GetEnumerator());
|
|
||||||
|
|
||||||
_mockDbContext.Setup(x => x.Set<User>()).Returns(_mockSet.Object);
|
|
||||||
_userRepository = new Repository<User>(_mockDbContext.Object);
|
|
||||||
}
|
|
||||||
|
|
||||||
[Test]
|
|
||||||
public void GetAll_ReturnsAllUsers()
|
|
||||||
{
|
|
||||||
// Act
|
|
||||||
var result = _userRepository._dbSet.ToList();
|
|
||||||
|
|
||||||
// Assert
|
|
||||||
Assert.AreEqual(_users.Count, result.Count);
|
|
||||||
CollectionAssert.AreEquivalent(_users, result);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
[Test]
|
|
||||||
public async Task Test_Add()
|
|
||||||
{
|
|
||||||
var addEntity = new User { UserName = "test" };
|
|
||||||
|
|
||||||
|
|
||||||
//Act
|
|
||||||
await _userRepository.AddAsync(addEntity);
|
|
||||||
|
|
||||||
//Assert
|
|
||||||
_mockDbContext.Verify(x => x.Add(addEntity), Times.Once);
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//Act
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
public class Tests
|
|
||||||
{
|
|
||||||
[SetUp]
|
|
||||||
public void Setup()
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
[Test]
|
|
||||||
public void Test1()
|
|
||||||
{
|
|
||||||
Assert.Pass();
|
|
||||||
}
|
|
||||||
|
|
||||||
public class MoqService
|
|
||||||
{
|
|
||||||
|
|
||||||
[Test]
|
|
||||||
public async Task testAdd()
|
|
||||||
{
|
|
||||||
var users = new List<User>
|
|
||||||
{
|
|
||||||
new User { UserName = "test 1"},
|
|
||||||
new User {UserName = "Product 2"},
|
|
||||||
new User { UserName = "Product 3"}
|
|
||||||
};
|
|
||||||
|
|
||||||
//Arrange
|
|
||||||
var dbContext = new Mock<IRaCISDBContext>();
|
|
||||||
dbContext.Setup(x => x.Set<User>()).ReturnsDbSet(users);
|
|
||||||
var mapperMock = new Mock<IMapper>();
|
|
||||||
var userInfoMock = new Mock<IUserInfo>();
|
|
||||||
var localizerMock = new Mock<IStringLocalizer>();
|
|
||||||
|
|
||||||
var repository = new Repository<User>(dbContext.Object, mapperMock.Object, userInfoMock.Object, localizerMock.Object);
|
|
||||||
|
|
||||||
|
|
||||||
var entity = new User { UserName = "Test Entity" };
|
|
||||||
|
|
||||||
//Act
|
|
||||||
await repository.AddAsync(entity);
|
|
||||||
|
|
||||||
//Assert
|
|
||||||
dbContext.Verify(x => x.Add(entity), Times.Once);
|
|
||||||
dbContext.Verify(x => x.SaveChanges(), Times.Once);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
[Test]
|
|
||||||
public async Task Add_Success()
|
|
||||||
{
|
|
||||||
// Arrange
|
|
||||||
var mockSet = new Mock<DbSet<User>>();
|
|
||||||
var mockContext = new Mock<IRaCISDBContext>();
|
|
||||||
mockContext.Setup(m => m.Set<User>()).Returns(mockSet.Object);
|
|
||||||
|
|
||||||
|
|
||||||
var mapperMock = new Mock<IMapper>();
|
|
||||||
var userInfoMock = new Mock<IUserInfo>();
|
|
||||||
var localizerMock = new Mock<IStringLocalizer>();
|
|
||||||
|
|
||||||
var repository = new Repository(mockContext.Object, mapperMock.Object, userInfoMock.Object, localizerMock.Object);
|
|
||||||
|
|
||||||
|
|
||||||
var entity = new User { UserName = "Test Entity" };
|
|
||||||
|
|
||||||
//Act
|
|
||||||
await repository.AddAsync(entity);
|
|
||||||
|
|
||||||
|
|
||||||
// Assert
|
|
||||||
mockContext.Verify(x => x.Add(entity), Times.Once);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
Loading…
Reference in New Issue