网站首页 网站源码
website
站点相关全部源代码,隐藏了一些关于服务器的信息
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);
    }
}
⚠⚠    以下内容为AI分析的结果,请根据实际情况进行判断。

上述代码是一个使用 NUnit 测试框架编写的单元测试类 AppOptionServiceTest,用于测试 AppOptionService 类的功能。以下是代码的主要功能和结构的详细解释:

1. 引入的命名空间

  • SystemSystem.Collections.GenericSystem.Text.JsonSystem.Threading.Tasks:基本的 .NET 类型和异步编程支持。
  • AutoMapper:用于对象映射的库。
  • Dpz.Core.InfrastructureDpz.Core.MongodbAccessDpz.Core.Public.Entity.OptionDpz.Core.Public.ViewModel.OptionDpz.Core.ServiceDpz.Core.Service.RepositoryServiceImpl:这些命名空间可能包含与应用程序的核心功能、数据访问和服务相关的类。
  • EasyCaching.CoreEasyCaching.Core.ConfigurationsEasyCaching.Core.DistributedLockEasyCaching.InMemoryEasyCaching.Redis:用于缓存的库。
  • Microsoft.Extensions.DependencyInjection:用于依赖注入的库。
  • NUnit.Framework:NUnit 测试框架的核心库。

2. 类定义

  • AppOptionServiceTest 继承自 Basic 类,可能是一个基类,提供了一些通用的测试功能或设置。

3. 测试方法

每个测试方法都使用 Test 特性标记,表示它们是测试用例。以下是每个测试方法的功能:

  • AddFriendTest:测试 AppOptionServiceAddFriendAsync 方法。创建一个 VmFriends 对象并将其添加到服务中。

  • GetFriendsTest:测试 GetFriendsAsync 方法,获取朋友列表并验证列表不为空且包含至少一个元素。还会将每个朋友对象序列化为 JSON 并打印到控制台。

  • FindTest:测试 FindAsync 方法,使用给定的 ID 查找朋友,并验证返回的模型不为空。

  • EditFriendsTest:测试 EditFriendAsync 方法。首先查找朋友,修改其名称,然后再次查找以验证名称是否已更新。

  • GetSaltTest:测试 GetSaltAsync 方法,使用给定的账户名获取盐值,并验证返回的盐值对象不为空且账户名匹配。

  • SaveFooterTest:测试 SaveFooterContentAsync 方法,保存页脚内容并验证从数据库中获取的内容是否与保存的内容相同。

4. 断言

每个测试方法中都包含多个断言(Assert),用于验证预期结果与实际结果是否一致。这些断言确保了服务的功能按预期工作。

5. 异步编程

所有测试方法都是异步的(使用 asyncawait),这表明它们可能会执行 I/O 操作(如数据库访问或网络请求),并且可以在等待这些操作完成时释放线程。

总结

这个测试类的目的是确保 AppOptionService 类的各个方法在不同情况下的正确性和稳定性。通过这些单元测试,开发人员可以在修改代码时快速验证功能是否仍然正常。

loading