Const-Phi.Moq.Extensions
1.0.0.6
dotnet add package Const-Phi.Moq.Extensions --version 1.0.0.6
NuGet\Install-Package Const-Phi.Moq.Extensions -Version 1.0.0.6
<PackageReference Include="Const-Phi.Moq.Extensions" Version="1.0.0.6" />
<PackageVersion Include="Const-Phi.Moq.Extensions" Version="1.0.0.6" />
<PackageReference Include="Const-Phi.Moq.Extensions" />
paket add Const-Phi.Moq.Extensions --version 1.0.0.6
#r "nuget: Const-Phi.Moq.Extensions, 1.0.0.6"
#:package Const-Phi.Moq.Extensions@1.0.0.6
#addin nuget:?package=Const-Phi.Moq.Extensions&version=1.0.0.6
#tool nuget:?package=Const-Phi.Moq.Extensions&version=1.0.0.6
Moq.Extensions
Расширение для библиотеки Moq, позволяющее создавать макеты классов, подменяющие поведение невиртуальных свойств.
Ограничения
Работа с интерфесами
Предположим, что в иерархии типов, для которых предполагается использовать библиотеку, существует такая подиерархия
public interface IEntity
{
int Id { get; set; }
}
public sealed class User : IEntity
{
public int Id { get; set; }
public string Login { get; set; }
}
И для быстрого создания макетов сущностей было написано некоторое количество построителей (builder)
public abstract class EntityTestDataBuilder<TEntity, TBuilder> : BaseTestDataBuilder<TEntity, TBuilder>
where TEntity : class, IEntity
where TBuilder : EntityTestDataBuilder<TEntity, TBuilder>
{
public TBuilder WithId(int id)
{
return this.RegisterValueForProperty(x => x.Id, id);
}
}
public sealed class UserTestDataBuilder : EntityTestDataBuilder<User, UserTestDataBuilder>
{
public TBuilder WithLogin(string login)
{
return this.RegisterValueForProperty(x => x.Login, login);
}
}
Для описанного выше случая в текущей версии библиотеки существует важное ограничение, для свойства Login значение присваиваться будет, а для Id – нет, так как оно задаётся интерфесом IEntity, а не классом User.
using NUnit.Framework;
[TestFixture]
public class UserTestDataBuilderTests
{
[Test]
public void Test()
{
// arrange
var expectedId = 1;
var expectedLogin = "test login";
// act
var user = new UserTestDataBuilder()
.With(targerId)
.WithLogin(targetLogin)
.Build();
// assert
Assert.IsNotNull(user);
Assert.AreEqual(targetLogin, user.Login);
Assert.AreEqual(targetId, user.Id); // fail here
}
}
В данный момент проводятся исследования с целью исключения данного ограничения.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net5.0 is compatible. net5.0-windows was computed. net6.0 is compatible. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. 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. |
| .NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
| .NET Standard | netstandard2.0 is compatible. netstandard2.1 is compatible. |
| .NET Framework | net461 is compatible. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
| MonoAndroid | monoandroid was computed. |
| MonoMac | monomac was computed. |
| MonoTouch | monotouch was computed. |
| Tizen | tizen40 was computed. tizen60 was computed. |
| Xamarin.iOS | xamarinios was computed. |
| Xamarin.Mac | xamarinmac was computed. |
| Xamarin.TVOS | xamarintvos was computed. |
| Xamarin.WatchOS | xamarinwatchos was computed. |
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.