网站首页 网站源码
using System.Text.Json;
using Dpz.Core.Public.ViewModel.Option;
namespace Dpz.Core.ServiceTest;
[TestFixture]
public class AppOptionServiceTest : Basic
{
[Test]
public async Task AddFriendTest()
{
var service = GetService<IAppOptionService>();
var friend = new VmFriends()
{
Avatar = "https://localhost:37701/Home/Image/61f28989337b51b42fc24686",
Description =
"汤加洪阿哈阿帕伊火山喷发迄今已经过去了10多天。除了风云系列气象卫星,我国的多颗高分、海洋系列卫星也在持续获取遥感影像,可以看出汤加火山喷发带来的变化。洪阿哈阿帕伊岛位于汤加首都努库阿洛法以北约65公里处,火山喷发前由两个小岛与火山岩组成,而到了1月16日,原来连在一起的火山岛变成了两个小岛,中间的火山岩直接消失了,变成了水域。",
Link = "https://localhost:37701/article/read/61f2898c337b51b42fc24696.html",
Name = "中国卫星集体跟拍汤加火山现状",
};
await service.AddFriendAsync(friend);
}
[Test]
public async Task GetFriendsTest()
{
var service = GetService<IAppOptionService>();
var list = await service.GetFriendsAsync();
Assert.NotNull(list);
Assert.Greater(list.Count, 0);
list.ForEach(x => Console.WriteLine(JsonSerializer.Serialize(x)));
}
[Test]
[TestCase("61f24eb63e68328408c1648c")]
public async Task FindTest(string id)
{
var service = GetService<IAppOptionService>();
var model = await service.FindAsync(id);
Assert.NotNull(model);
Console.WriteLine(model);
}
[Test]
[TestCase("61f25a09a87ec22504cd2906")]
public async Task EditFriendsTest(string id)
{
var service = GetService<IAppOptionService>();
var model = await service.FindAsync(id);
Assert.NotNull(model);
if (model is VmFriends friend)
{
const string name = "Blazor WebAssembly站点 3";
friend.Name = name;
await service.EditFriendAsync(friend);
var newModel = await service.FindAsync(id);
Assert.NotNull(newModel);
var newFriend = newModel as VmFriends;
Assert.NotNull(newFriend);
Assert.AreEqual(name, newFriend.Name);
}
}
[Test]
[TestCase("pengqian")]
public async Task GetSaltTest(string account)
{
var service = GetService<IAppOptionService>();
var salt = await service.GetSaltAsync(account);
Assert.NotNull(salt);
Assert.AreEqual(account, salt.Account);
Console.WriteLine(JsonSerializer.Serialize(salt));
}
[Test]
[TestCase("footer123123")]
public async Task SaveFooterTest(string content)
{
var service = GetService<IAppOptionService>();
await service.SaveFooterContentAsync(content);
var dbContent = await service.GetFooterContentAsync();
Assert.IsTrue(content == dbContent);
}
}
上述代码是一个使用 NUnit 测试框架编写的单元测试类 AppOptionServiceTest
,用于测试 AppOptionService
类的功能。以下是代码的主要功能和结构的详细解释:
System
、System.Collections.Generic
、System.Text.Json
、System.Threading.Tasks
:基本的 .NET 类型和异步编程支持。AutoMapper
:用于对象映射的库。Dpz.Core.Infrastructure
、Dpz.Core.MongodbAccess
、Dpz.Core.Public.Entity.Option
、Dpz.Core.Public.ViewModel.Option
、Dpz.Core.Service
、Dpz.Core.Service.RepositoryServiceImpl
:这些命名空间可能包含与应用程序的核心功能、数据访问和服务相关的类。EasyCaching.Core
、EasyCaching.Core.Configurations
、EasyCaching.Core.DistributedLock
、EasyCaching.InMemory
、EasyCaching.Redis
:用于缓存的库。Microsoft.Extensions.DependencyInjection
:用于依赖注入的库。NUnit.Framework
:NUnit 测试框架的核心库。AppOptionServiceTest
继承自 Basic
类,可能是一个基类,提供了一些通用的测试功能或设置。每个测试方法都使用 Test
特性标记,表示它们是测试用例。以下是每个测试方法的功能:
AddFriendTest
:测试 AppOptionService
的 AddFriendAsync
方法。创建一个 VmFriends
对象并将其添加到服务中。
GetFriendsTest
:测试 GetFriendsAsync
方法,获取朋友列表并验证列表不为空且包含至少一个元素。还会将每个朋友对象序列化为 JSON 并打印到控制台。
FindTest
:测试 FindAsync
方法,使用给定的 ID 查找朋友,并验证返回的模型不为空。
EditFriendsTest
:测试 EditFriendAsync
方法。首先查找朋友,修改其名称,然后再次查找以验证名称是否已更新。
GetSaltTest
:测试 GetSaltAsync
方法,使用给定的账户名获取盐值,并验证返回的盐值对象不为空且账户名匹配。
SaveFooterTest
:测试 SaveFooterContentAsync
方法,保存页脚内容并验证从数据库中获取的内容是否与保存的内容相同。
每个测试方法中都包含多个断言(Assert
),用于验证预期结果与实际结果是否一致。这些断言确保了服务的功能按预期工作。
所有测试方法都是异步的(使用 async
和 await
),这表明它们可能会执行 I/O 操作(如数据库访问或网络请求),并且可以在等待这些操作完成时释放线程。
这个测试类的目的是确保 AppOptionService
类的各个方法在不同情况下的正确性和稳定性。通过这些单元测试,开发人员可以在修改代码时快速验证功能是否仍然正常。