Sungero.MockPlatform
26.3.0
dotnet add package Sungero.MockPlatform --version 26.3.0
NuGet\Install-Package Sungero.MockPlatform -Version 26.3.0
<PackageReference Include="Sungero.MockPlatform" Version="26.3.0" />
<PackageVersion Include="Sungero.MockPlatform" Version="26.3.0" />
<PackageReference Include="Sungero.MockPlatform" />
paket add Sungero.MockPlatform --version 26.3.0
#r "nuget: Sungero.MockPlatform, 26.3.0"
#:package Sungero.MockPlatform@26.3.0
#addin nuget:?package=Sungero.MockPlatform&version=26.3.0
#tool nuget:?package=Sungero.MockPlatform&version=26.3.0
Sungero.MockPlatform
Мок-платформа DirectumRX для unit-тестов прикладных модулей: подменяет платформенный рантайм (репозитории, метаданные, диалоги, блокировки, подписи, workflow), чтобы прикладной серверный код можно было выполнять в NUnit без базы, веб-сервера и развёрнутого тенанта.
Пакет собран под платформу 26.3.0.*.
Состав пакета
В пакете только Server.Tests.dll и MSBuild-скрипты. Платформенных сборок DirectumRX в пакете нет,
они берутся из каталога веб-сервера установленного RX на вашей машине.
Установка
dotnet add package Sungero.MockPlatform
Обязательная настройка
Пакету нужны два пути к установленному RX. Оба задаются явно: если хотя бы один не задан, сборка проекта завершится ошибкой.
| Свойство | Переменная среды | Что это |
|---|---|---|
RxWebServerPath |
RX_WEBSERVER_PATH |
каталог веб-сервера RX, обычно <DirectumLauncher>\etc\_builds_bin\SungeroWebServer |
RxAppliedModulesPath |
RX_APPLIED_MODULES_PATH |
каталог сборок прикладных модулей, обычно <RxWebServerPath>\AppliedModules |
В csproj:
<PropertyGroup>
<RxWebServerPath>D:\RX\etc\_builds_bin\SungeroWebServer</RxWebServerPath>
<RxAppliedModulesPath>D:\RX\etc\_builds_bin\SungeroWebServer\AppliedModules</RxAppliedModulesPath>
</PropertyGroup>
Использование
using MockPlatform;
using MockPlatform.Core;
[assembly: ResetMockEnvironment]
[SetUpFixture]
public class Environment
{
[OneTimeSetUp]
public void OneTimeSetUp() => ModuleManager.RegisterModules("Sungero.Company", "Sungero.Docflow", "MyCompany.MyModule");
[OneTimeTearDown]
public void OneTimeTearDown() => Patcher.Instance.UnpatchAll();
}
[assembly: ResetMockEnvironment] сбрасывает mock-окружение перед каждым тестом. Без него состояние
одного теста влияет на остальные.
Пример теста:
using MockPlatform.Core;
using MockPlatform.Extensions;
using Sungero.Commons;
using Sungero.Commons.Server;
public class GetDuplicates
{
[Test]
[Description("Для группы параметров найден дубликат.")]
public void GetDuplicates_DuplicatesExistReturnsTrue()
{
// Arrange.
var groupName = Guid.NewGuid().ToString();
var group = ParametersGroups.Create();
group.Status = Sungero.CoreEntities.DatabookEntry.Status.Active;
group.Name = groupName;
var newGroup = ParametersGroups.Create();
newGroup.Status = Sungero.CoreEntities.DatabookEntry.Status.Active;
newGroup.Name = groupName;
// Act.
var result = newGroup.GetServerFunctions<ParametersGroupFunctions>().GetDuplicates();
// Assert.
Assert.That(result.Count, Is.EqualTo(1));
}
}
Сущности, созданные через ParametersGroups.Create(), попадают в мок-репозиторий, поэтому запросы
внутри GetDuplicates их находят.
Основные точки входа:
| Тип | Назначение |
|---|---|
ModuleManager.RegisterModules(...) |
регистрация модулей в контейнере платформы |
EntityFactory.Create<T>() |
создание мок-сущности |
MockExtensions.SetupStateAndInfo<T>() |
настройка entity.State и entity.Info |
MockFunctionStubs.Setup / SetupEntity |
подмена реализации метода |
MockCurrentUser.Set(...) |
текущий пользователь |
MockTestEnvironment.Reset() |
ручной сброс окружения |
Особенности
Сборка называется Server.Tests.dll, а не по имени пакета. Это имя присутствует в списках
InternalsVisibleTo платформенных сборок и требуется для доступа к internal-типам платформы.
Не переименовывайте её и не создавайте в решении вторую сборку с таким именем.
Платформенные сборки копируются в выходной каталог тестового проекта, поэтому его размер составляет несколько сотен мегабайт. Это нужно, чтобы тест-хост нашёл платформу в рантайме.
В каталоге веб-сервера есть нативные библиотеки, поэтому при сборке возможны предупреждения
MSB3246: Resolved file has a bad image, no metadata. Их можно игнорировать.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net10.0
- Lib.Harmony (>= 2.4.2)
- Moq (>= 4.20.72)
- NUnit (>= 3.14.0)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|