using System.Linq;
using System.Text.Json;
using Dpz.Core.EnumLibrary;
using Dpz.Core.Public.ViewModel;
namespace Dpz.Core.ServiceTest;
[TestFixture]
public class CommentServiceTest : Basic
{
[Test]
public async Task InsertCommentAsync()
{
ICommentService service = GetService<ICommentService>();
for (var i = 0; i < 30; i++)
{
var vm = new VmPublishComment
{
CommentText = $"这个评论\r\n\r\n{Guid.NewGuid()}",
Email = "pengqian089@foxmail.com",
NickName = "风敛",
Node = CommentNode.Article,
Relation = "61be591da417ba2111512e0b",
Site = "",
};
await service.PublishCommentAsync(vm);
await Task.Delay(500);
}
}
[Test]
[TestCase("620fc1b5eb4a99143fe87ea5")]
public async Task InsertReplyComment(string replyId)
{
ICommentService service = GetService<ICommentService>();
for (var i = 0; i < 2; i++)
{
var vm = new VmPublishComment
{
CommentText = $"这个回复\r\n\r\n{Guid.NewGuid()}",
Email = "pengqian089@yeah.net",
NickName = "被打断的狗腿",
Node = CommentNode.Article,
Relation = "61be591da417ba2111512e0b",
Site = "",
ReplyId = replyId,
};
await service.PublishCommentAsync(vm);
}
}
[Test]
public async Task GetCommentsTest()
{
ICommentService service = GetService<ICommentService>();
var list = await service.GetCommentsAsync(
CommentNode.Article,
"61be591da417ba2111512e0b",
1,
5
);
Assert.That(list, Is.Not.Null);
Assert.That(list.Count(), Is.GreaterThan(0));
var json = JsonSerializer.Serialize(list);
Console.WriteLine(json);
}
}
⚠⚠ 以下内容为AI分析的结果,请根据实际情况进行判断。
这是一个用于测试评论服务(ICommentService)的单元测试类。让我详细解释一下这个代码:
类结构
[TestFixture]
public class CommentServiceTest : Basic
- 使用NUnit测试框架的
[TestFixture]属性标记测试类 - 继承自
Basic类,可能包含了测试的基础配置和依赖注入相关方法
测试方法详解
1. InsertCommentAsync() - 批量插入评论测试
[Test]
public async Task InsertCommentAsync()
- 目的:测试发布评论功能
- 逻辑:
- 循环30次创建评论
- 每个评论包含随机GUID的文本内容
- 设置固定的邮箱、昵称等信息
- 评论类型为文章评论(
CommentNode.Article) - 关联到特定文章ID(
"61be591da417ba2111512e0b") - 每次发布后延迟500ms,可能是为了避免频率限制
2. InsertReplyComment() - 回复评论测试
[Test]
[TestCase("620fc1b5eb4a99143fe87ea5")]
public async Task InsertReplyComment(string replyId)
- 目的:测试回复特定评论的功能
- 特点:
- 使用
[TestCase]属性提供测试参数 - 创建2条回复评论
- 通过
ReplyId字段指定要回复的评论ID - 使用不同的用户信息(邮箱、昵称)
- 使用
3. GetCommentsTest() - 获取评论列表测试
[Test]
public async Task GetCommentsTest()
- 目的:测试获取评论列表功能
- 验证逻辑:
- 获取指定文章的评论(第1页,每页5条)
- 断言结果不为空
- 断言评论数量大于0
- 将结果序列化为JSON并输出到控制台
关键组件
VmPublishComment 视图模型
包含以下字段:
CommentText: 评论内容Email: 用户邮箱NickName: 用户昵称Node: 评论节点类型(文章、页面等)Relation: 关联的内容IDSite: 网站信息ReplyId: 回复的评论ID(可选)
CommentNode 枚举
CommentNode.Article: 表示文章评论类型
测试特点
- 异步测试:所有测试方法都是异步的,使用
async/await - 集成测试:通过依赖注入获取真实的服务实例
- 数据驱动:使用
[TestCase]提供测试数据 - 断言验证:使用NUnit的Assert进行结果验证
- 调试友好:输出JSON结果便于调试
这个测试类主要验证了评论系统的核心功能:发布评论、回复评论和获取评论列表。
AI 正在分析代码…
评论加载中...