diff --git a/IRaCIS.Core.Infra.EFCore/Context/IRaCISDBContext.cs b/IRaCIS.Core.Infra.EFCore/Context/IRaCISDBContext.cs index a1c877d0..299c6ab3 100644 --- a/IRaCIS.Core.Infra.EFCore/Context/IRaCISDBContext.cs +++ b/IRaCIS.Core.Infra.EFCore/Context/IRaCISDBContext.cs @@ -41,6 +41,10 @@ namespace IRaCIS.Core.Infra.EFCore //_configuration = configuration; } + public IRaCISDBContext() + { + + } //比数据库上下文构造函数先执行 不能构造函数注入的方式使用配置文件 protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) diff --git a/IRaCIS.Core.Infra.EFCore/Repository/Repository.cs b/IRaCIS.Core.Infra.EFCore/Repository/Repository.cs index 586e9ea3..befa523f 100644 --- a/IRaCIS.Core.Infra.EFCore/Repository/Repository.cs +++ b/IRaCIS.Core.Infra.EFCore/Repository/Repository.cs @@ -47,7 +47,11 @@ namespace IRaCIS.Core.Infra.EFCore } - + public Repository(IRaCISDBContext dbContext ) + { + + _dbContext = dbContext; + } #region 异步 EF 跟踪 添加 diff --git a/IRaCIS.Core.Test/IRaCIS.Core.Test.csproj b/IRaCIS.Core.Test/IRaCIS.Core.Test.csproj index 5f49abc8..6b02ee5c 100644 --- a/IRaCIS.Core.Test/IRaCIS.Core.Test.csproj +++ b/IRaCIS.Core.Test/IRaCIS.Core.Test.csproj @@ -13,8 +13,9 @@ - + + @@ -112,4 +113,8 @@ + + + + diff --git a/IRaCIS.Core.Test/UnitTest1.cs b/IRaCIS.Core.Test/UnitTest1.cs index 1084bdf8..e1111b75 100644 --- a/IRaCIS.Core.Test/UnitTest1.cs +++ b/IRaCIS.Core.Test/UnitTest1.cs @@ -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 -//{ -// public class Tests -// { -// [SetUp] -// public void Setup() -// { -// } +namespace IRaCIS.Core.Test +{ + [TestFixture] + public class RepositoryTests + { + private Repository _userRepository; + private Mock _mockDbContext; + private Mock> _mockSet; + private List _users; -// [Test] -// public void Test1() -// { -// Assert.Pass(); -// } -// } -//} \ No newline at end of file + [SetUp] + public void Setup() + { + // Create a mock DbContext with an in-memory list of users + _users = new List + { + new User { UserName = "Alice" }, + new User { UserName = "Bob" }, + new User { UserName = "Charlie" } + }; + _mockDbContext = new Mock(); + _mockSet = new Mock>(); + _mockSet.As>().Setup(m => m.Provider).Returns(_users.AsQueryable().Provider); + _mockSet.As>().Setup(m => m.Expression).Returns(_users.AsQueryable().Expression); + _mockSet.As>().Setup(m => m.ElementType).Returns(_users.AsQueryable().ElementType); + _mockSet.As>().Setup(m => m.GetEnumerator()).Returns(_users.GetEnumerator()); + + _mockDbContext.Setup(x => x.Set()).Returns(_mockSet.Object); + _userRepository = new Repository(_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 + { + new User { UserName = "test 1"}, + new User {UserName = "Product 2"}, + new User { UserName = "Product 3"} + }; + + //Arrange + var dbContext = new Mock(); + dbContext.Setup(x => x.Set()).ReturnsDbSet(users); + var mapperMock = new Mock(); + var userInfoMock = new Mock(); + var localizerMock = new Mock(); + + var repository = new Repository(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>(); + var mockContext = new Mock(); + mockContext.Setup(m => m.Set()).Returns(mockSet.Object); + + + var mapperMock = new Mock(); + var userInfoMock = new Mock(); + var localizerMock = new Mock(); + + 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); + } + } +} \ No newline at end of file