mirror of
https://github.com/anjoy8/Blog.Core.git
synced 2024-09-20 23:48:27 +08:00
✅ 添加Cache单元测试
This commit is contained in:
parent
c032993b2f
commit
64c2e8c0e4
|
@ -758,21 +758,6 @@
|
|||
Values控制器
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Blog.Core.Controllers.ValuesController.#ctor(Blog.Core.IServices.IBlogArticleServices,AutoMapper.IMapper,Blog.Core.IServices.IAdvertisementServices,Blog.Core.Model.Love,Blog.Core.IServices.IRoleModulePermissionServices,Blog.Core.Common.HttpContextUser.IUser,Blog.Core.IServices.IPasswordLibServices,Blog.Core.Common.Https.HttpPolly.IHttpPollyHelper,Blog.Core.EventBus.IRabbitMQPersistentConnection,Microsoft.Extensions.Options.IOptions{Blog.Core.Common.Option.SeqOptions})">
|
||||
<summary>
|
||||
ValuesController
|
||||
</summary>
|
||||
<param name="blogArticleServices"></param>
|
||||
<param name="mapper"></param>
|
||||
<param name="advertisementServices"></param>
|
||||
<param name="love"></param>
|
||||
<param name="roleModulePermissionServices"></param>
|
||||
<param name="user"></param>
|
||||
<param name="passwordLibServices"></param>
|
||||
<param name="httpPollyHelper"></param>
|
||||
<param name="persistentConnection"></param>
|
||||
<param name="seqOptions"></param>
|
||||
</member>
|
||||
<member name="M:Blog.Core.Controllers.ValuesController.TestRabbitMqPublish">
|
||||
<summary>
|
||||
测试Rabbit消息队列发送
|
||||
|
@ -900,6 +885,12 @@
|
|||
</summary>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:Blog.Core.Controllers.ValuesController.TestCacheAsync">
|
||||
<summary>
|
||||
测试缓存
|
||||
</summary>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="T:Blog.Core.Controllers.WeChatCompanyController">
|
||||
<summary>
|
||||
WeChatCompanyController
|
||||
|
|
|
@ -19,6 +19,7 @@ using RabbitMQ.Client.Events;
|
|||
using System.ComponentModel.DataAnnotations;
|
||||
using System.Linq.Expressions;
|
||||
using System.Text;
|
||||
using Blog.Core.Common.Caches.Interface;
|
||||
using Blog.Core.Common.Utility;
|
||||
|
||||
namespace Blog.Core.Controllers
|
||||
|
@ -45,29 +46,11 @@ namespace Blog.Core.Controllers
|
|||
private readonly IHttpPollyHelper _httpPollyHelper;
|
||||
private readonly IRabbitMQPersistentConnection _persistentConnection;
|
||||
private readonly SeqOptions _seqOptions;
|
||||
private readonly ICaching _cache;
|
||||
|
||||
/// <summary>
|
||||
/// ValuesController
|
||||
/// </summary>
|
||||
/// <param name="blogArticleServices"></param>
|
||||
/// <param name="mapper"></param>
|
||||
/// <param name="advertisementServices"></param>
|
||||
/// <param name="love"></param>
|
||||
/// <param name="roleModulePermissionServices"></param>
|
||||
/// <param name="user"></param>
|
||||
/// <param name="passwordLibServices"></param>
|
||||
/// <param name="httpPollyHelper"></param>
|
||||
/// <param name="persistentConnection"></param>
|
||||
/// <param name="seqOptions"></param>
|
||||
public ValuesController(IBlogArticleServices blogArticleServices
|
||||
, IMapper mapper
|
||||
, IAdvertisementServices advertisementServices
|
||||
, Love love
|
||||
, IRoleModulePermissionServices roleModulePermissionServices
|
||||
, IUser user, IPasswordLibServices passwordLibServices
|
||||
, IHttpPollyHelper httpPollyHelper
|
||||
, IRabbitMQPersistentConnection persistentConnection
|
||||
, IOptions<SeqOptions> seqOptions)
|
||||
public ValuesController(IBlogArticleServices blogArticleServices, IMapper mapper, IAdvertisementServices advertisementServices, Love love,
|
||||
IRoleModulePermissionServices roleModulePermissionServices, IUser user, IPasswordLibServices passwordLibServices,
|
||||
IHttpPollyHelper httpPollyHelper, IRabbitMQPersistentConnection persistentConnection, IOptions<SeqOptions> seqOptions, ICaching caching)
|
||||
{
|
||||
// 测试 Authorize 和 mapper
|
||||
_mapper = mapper;
|
||||
|
@ -85,6 +68,7 @@ namespace Blog.Core.Controllers
|
|||
// httpPolly
|
||||
_httpPollyHelper = httpPollyHelper;
|
||||
_persistentConnection = persistentConnection;
|
||||
_cache = caching;
|
||||
_seqOptions = seqOptions.Value;
|
||||
}
|
||||
|
||||
|
@ -99,6 +83,7 @@ namespace Blog.Core.Controllers
|
|||
{
|
||||
_persistentConnection.TryConnect();
|
||||
}
|
||||
|
||||
_persistentConnection.PublishMessage("Hello, RabbitMQ!", exchangeName: "blogcore", routingKey: "myRoutingKey");
|
||||
return Ok();
|
||||
}
|
||||
|
@ -177,18 +162,18 @@ namespace Blog.Core.Controllers
|
|||
* 测试按照指定列查询
|
||||
*/
|
||||
var queryByColums = await _blogArticleServices
|
||||
.Query<BlogViewModels>(it => new BlogViewModels() { btitle = it.btitle });
|
||||
.Query<BlogViewModels>(it => new BlogViewModels() { btitle = it.btitle });
|
||||
|
||||
/*
|
||||
* 测试按照指定列查询带多条件和排序方法
|
||||
*/
|
||||
* 测试按照指定列查询带多条件和排序方法
|
||||
*/
|
||||
Expression<Func<BlogArticle, bool>> registerInfoWhere = a => a.btitle == "xxx" && a.bRemark == "XXX";
|
||||
var queryByColumsByMultiTerms = await _blogArticleServices
|
||||
.Query<BlogArticle>(it => new BlogArticle() { btitle = it.btitle }, registerInfoWhere, "bID Desc");
|
||||
.Query<BlogArticle>(it => new BlogArticle() { btitle = it.btitle }, registerInfoWhere, "bID Desc");
|
||||
|
||||
/*
|
||||
* 测试 sql 更新
|
||||
*
|
||||
*
|
||||
* 【SQL参数】:@bID:5
|
||||
* @bsubmitter:laozhang619
|
||||
* @IsDeleted:False
|
||||
|
@ -196,7 +181,7 @@ namespace Blog.Core.Controllers
|
|||
* `bsubmitter`=@bsubmitter,`IsDeleted`=@IsDeleted WHERE `bID`=@bID
|
||||
*/
|
||||
var updateSql = await _blogArticleServices.Update(new
|
||||
{ bsubmitter = $"laozhang{DateTime.Now.Millisecond}", IsDeleted = false, bID = 5 });
|
||||
{ bsubmitter = $"laozhang{DateTime.Now.Millisecond}", IsDeleted = false, bID = 5 });
|
||||
|
||||
|
||||
// 测试 AOP 缓存
|
||||
|
@ -484,6 +469,31 @@ namespace Blog.Core.Controllers
|
|||
{
|
||||
return IdGeneratorUtility.NextId();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 测试缓存
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
[HttpGet]
|
||||
[AllowAnonymous]
|
||||
public async Task<MessageModel<string>> TestCacheAsync()
|
||||
{
|
||||
await _cache.SetAsync("test", "test", new TimeSpan(0, 10, 0));
|
||||
|
||||
var result = await _cache.GetAsync<string>("test");
|
||||
if (!"test".Equals(result))
|
||||
{
|
||||
return Failed("缓存失败,值不一样");
|
||||
}
|
||||
|
||||
var count = _cache.GetAllCacheKeys().Count;
|
||||
if (count <= 0)
|
||||
{
|
||||
return Failed("缓存失败,数量不对");
|
||||
}
|
||||
|
||||
return Success<string>("");
|
||||
}
|
||||
}
|
||||
|
||||
public class ClaimDto
|
||||
|
|
|
@ -42,4 +42,14 @@ public static class InternalApp
|
|||
{
|
||||
RootServices = app.Services;
|
||||
}
|
||||
|
||||
public static void ConfigureApplication(this IServiceCollection services)
|
||||
{
|
||||
InternalServices = services;
|
||||
}
|
||||
|
||||
public static void ConfigureApplication(this IServiceProvider services)
|
||||
{
|
||||
RootServices = services;
|
||||
}
|
||||
}
|
37
Blog.Core.Tests/Common_Test/CacheTest.cs
Normal file
37
Blog.Core.Tests/Common_Test/CacheTest.cs
Normal file
|
@ -0,0 +1,37 @@
|
|||
using Autofac;
|
||||
using Blog.Core.Common;
|
||||
using Blog.Core.Common.Caches.Interface;
|
||||
using Xunit;
|
||||
using Xunit.Abstractions;
|
||||
|
||||
namespace Blog.Core.Tests.Common_Test;
|
||||
|
||||
public class CacheTest
|
||||
{
|
||||
private readonly ITestOutputHelper _testOutputHelper;
|
||||
DI_Test dI_Test = new DI_Test();
|
||||
private readonly ICaching _cache;
|
||||
|
||||
public CacheTest(ITestOutputHelper testOutputHelper)
|
||||
{
|
||||
_testOutputHelper = testOutputHelper;
|
||||
dI_Test.Build();
|
||||
_cache = App.GetService<ICaching>();
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void TestCaching()
|
||||
{
|
||||
_cache.Set("test", "test", new TimeSpan(0, 10, 0));
|
||||
|
||||
var result = _cache.Get<string>("test");
|
||||
Assert.Equal("test", result);
|
||||
|
||||
var caches = _cache.GetAllCacheKeys();
|
||||
_testOutputHelper.WriteLine(caches.ToJson());
|
||||
Assert.NotNull(caches);
|
||||
|
||||
var count = _cache.GetAllCacheKeys().Count;
|
||||
Assert.Equal(1, count);
|
||||
}
|
||||
}
|
|
@ -18,6 +18,8 @@ using Microsoft.IdentityModel.Tokens;
|
|||
using System.Reflection;
|
||||
using System.Security.Claims;
|
||||
using System.Text;
|
||||
using Blog.Core.Common.Core;
|
||||
using Blog.Core.Extensions.ServiceExtensions;
|
||||
using Microsoft.Extensions.Logging;
|
||||
|
||||
namespace Blog.Core.Tests
|
||||
|
@ -51,7 +53,11 @@ namespace Blog.Core.Tests
|
|||
var basePath = AppContext.BaseDirectory;
|
||||
|
||||
IServiceCollection services = new ServiceCollection();
|
||||
services.ConfigureApplication();
|
||||
|
||||
services.AddLogging();
|
||||
services.AddAutoMapperSetup();
|
||||
services.AddCacheSetup();
|
||||
|
||||
services.AddSingleton(new AppSettings(basePath));
|
||||
services.AddScoped<DBSeed>();
|
||||
|
@ -99,11 +105,11 @@ namespace Blog.Core.Tests
|
|||
var builder = new ContainerBuilder();
|
||||
//builder.RegisterType<AdvertisementServices>().As<IAdvertisementServices>();
|
||||
builder.RegisterInstance(new LoggerFactory())
|
||||
.As<ILoggerFactory>();
|
||||
.As<ILoggerFactory>();
|
||||
|
||||
builder.RegisterGeneric(typeof(Logger<>))
|
||||
.As(typeof(ILogger<>))
|
||||
.SingleInstance();
|
||||
.As(typeof(ILogger<>))
|
||||
.SingleInstance();
|
||||
//指定已扫描程序集中的类型注册为提供所有其实现的接口。
|
||||
|
||||
builder.RegisterGeneric(typeof(BaseRepository<>)).As(typeof(IBaseRepository<>)).InstancePerDependency(); //注册仓储
|
||||
|
@ -118,15 +124,15 @@ namespace Blog.Core.Tests
|
|||
var servicesDllFile = Path.Combine(basePath, "Blog.Core.Services.dll");
|
||||
var assemblysServices = Assembly.LoadFrom(servicesDllFile);
|
||||
builder.RegisterAssemblyTypes(assemblysServices)
|
||||
.AsImplementedInterfaces()
|
||||
.InstancePerLifetimeScope()
|
||||
.PropertiesAutowired()
|
||||
.EnableInterfaceInterceptors();
|
||||
.AsImplementedInterfaces()
|
||||
.InstancePerLifetimeScope()
|
||||
.PropertiesAutowired()
|
||||
.EnableInterfaceInterceptors();
|
||||
|
||||
var repositoryDllFile = Path.Combine(basePath, "Blog.Core.Repository.dll");
|
||||
var assemblysRepository = Assembly.LoadFrom(repositoryDllFile);
|
||||
builder.RegisterAssemblyTypes(assemblysRepository)
|
||||
.PropertiesAutowired().AsImplementedInterfaces();
|
||||
.PropertiesAutowired().AsImplementedInterfaces();
|
||||
|
||||
services.Replace(ServiceDescriptor.Transient<IControllerActivator, ServiceBasedControllerActivator>());
|
||||
|
||||
|
@ -136,9 +142,18 @@ namespace Blog.Core.Tests
|
|||
builder.Populate(services);
|
||||
|
||||
//使用已进行的组件登记创建新容器
|
||||
var ApplicationContainer = builder.Build();
|
||||
var applicationContainer = builder.Build();
|
||||
return applicationContainer;
|
||||
}
|
||||
|
||||
return ApplicationContainer;
|
||||
public IServiceProvider Build()
|
||||
{
|
||||
var container = DICollections();
|
||||
var serviceProvider = new AutofacServiceProvider(container);
|
||||
serviceProvider.ConfigureApplication();
|
||||
App.IsBuild = true;
|
||||
App.IsRun = true;
|
||||
return serviceProvider;
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user