Test.EIImageViewer
parent
d7bd178fa2
commit
a1d43653fb
|
@ -41,6 +41,10 @@ namespace IRaCIS.Core.Infra.EFCore
|
||||||
//_configuration = configuration;
|
//_configuration = configuration;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public IRaCISDBContext()
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
//比数据库上下文构造函数先执行 不能构造函数注入的方式使用配置文件
|
//比数据库上下文构造函数先执行 不能构造函数注入的方式使用配置文件
|
||||||
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
|
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
|
||||||
|
|
|
@ -47,7 +47,11 @@ namespace IRaCIS.Core.Infra.EFCore
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Repository(IRaCISDBContext dbContext )
|
||||||
|
{
|
||||||
|
|
||||||
|
_dbContext = dbContext;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
#region 异步 EF 跟踪 添加
|
#region 异步 EF 跟踪 添加
|
||||||
|
|
|
@ -13,8 +13,9 @@
|
||||||
</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">
|
||||||
|
@ -112,4 +113,8 @@
|
||||||
<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,18 +1,157 @@
|
||||||
//using NUnit.Framework;
|
using AutoMapper;
|
||||||
|
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
|
||||||
//{
|
{
|
||||||
// public class Tests
|
[TestFixture]
|
||||||
// {
|
public class RepositoryTests
|
||||||
// [SetUp]
|
{
|
||||||
// public void Setup()
|
private Repository<User> _userRepository;
|
||||||
// {
|
private Mock<IRaCISDBContext> _mockDbContext;
|
||||||
// }
|
private Mock<DbSet<User>> _mockSet;
|
||||||
|
private List<User> _users;
|
||||||
|
|
||||||
// [Test]
|
[SetUp]
|
||||||
// public void Test1()
|
public void Setup()
|
||||||
// {
|
{
|
||||||
// Assert.Pass();
|
// Create a mock DbContext with an in-memory list of users
|
||||||
// }
|
_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