From a16a3597864da4d875dd8d42096aed8051db66de Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Valentin=20Breu=C3=9F?= Date: Sun, 1 Feb 2026 08:46:17 +0100 Subject: [PATCH 1/6] docs: improve documentation --- Docs/pages/01-create-mocks.md | 10 +++++++--- README.md | 10 +++++++--- 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/Docs/pages/01-create-mocks.md b/Docs/pages/01-create-mocks.md index e7c246e8..eaf575f3 100644 --- a/Docs/pages/01-create-mocks.md +++ b/Docs/pages/01-create-mocks.md @@ -14,9 +14,13 @@ var classMock = Mock.Create(); var classWithArgsMock = Mock.Create( BaseClass.WithConstructorParameters("Dark", 42) ); +``` + +You can specify up to eight additional interfaces that the mock also implements (beyond the first type): -// Specify up to 8 additional interfaces for the mock: -var sut2 = Mock.Create(); +```csharp +// return type is a MyChocolateDispenser that also implements ILemonadeDispenser +var sut = Mock.Create(); ``` **Notes:** @@ -69,7 +73,7 @@ var classMock = Mock.Create( ``` This is useful when you want mocks to return specific default values for certain types instead of the standard defaults (e.g., `null`, `0`, empty strings). -- `.UseConstructorParametersFor(object?[])`: +- `UseConstructorParametersFor(object?[])`: - Configures constructor parameters to use when creating mocks of type `T`, unless explicit parameters are provided during mock creation via `BaseClass.WithConstructorParameters(…)`. diff --git a/README.md b/README.md index cacc97c4..fee03d5b 100644 --- a/README.md +++ b/README.md @@ -96,9 +96,13 @@ var classMock = Mock.Create(); var classWithArgsMock = Mock.Create( BaseClass.WithConstructorParameters("Dark", 42) ); +``` + +You can specify up to eight additional interfaces that the mock also implements (beyond the first type): -// Specify up to 8 additional interfaces for the mock: -var sut2 = Mock.Create(); +```csharp +// return type is a MyChocolateDispenser that also implements ILemonadeDispenser +var sut = Mock.Create(); ``` **Notes:** @@ -151,7 +155,7 @@ var classMock = Mock.Create( ``` This is useful when you want mocks to return specific default values for certain types instead of the standard defaults (e.g., `null`, `0`, empty strings). -- `.UseConstructorParametersFor(object?[])`: +- `UseConstructorParametersFor(object?[])`: - Configures constructor parameters to use when creating mocks of type `T`, unless explicit parameters are provided during mock creation via `BaseClass.WithConstructorParameters(…)`. From 89858e5dd1afd4759d89e868b1f4444e10826434 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Valentin=20Breu=C3=9F?= Date: Sun, 1 Feb 2026 09:08:59 +0100 Subject: [PATCH 2/6] Further improvements --- Docs/pages/01-create-mocks.md | 27 ++++++++++++++------------- README.md | 27 ++++++++++++++------------- 2 files changed, 28 insertions(+), 26 deletions(-) diff --git a/Docs/pages/01-create-mocks.md b/Docs/pages/01-create-mocks.md index eaf575f3..4ee08bb2 100644 --- a/Docs/pages/01-create-mocks.md +++ b/Docs/pages/01-create-mocks.md @@ -33,7 +33,7 @@ var sut = Mock.Create(); You can control the default behavior of the mock by providing a `MockBehavior`: ```csharp -var strictMock = Mock.Create(new MockBehavior { ThrowWhenNotSetup = true }); +var strictMock = Mock.Create(MockBehavior.Default with { ThrowWhenNotSetup = true }); // For classes with constructor parameters and custom behavior: var classMock = Mock.Create( @@ -44,18 +44,13 @@ var classMock = Mock.Create( ### `MockBehavior` options -- `ThrowWhenNotSetup` (bool): - - If `false` (default), the mock will return a default value (see `DefaultValue`). - - If `true`, the mock will throw an exception when a method or property is called without a setup. - `SkipBaseClass` (bool): - If `false` (default), the mock will call the base class implementation and use its return values as default values, if no explicit setup is defined. - If `true`, the mock will not call any base class implementations. -- `Initialize(params Action>[] setups)`: - - Automatically initialize all mocks of type T with the given setups when they are created. - - The callback can optionally receive an additional counter parameter which allows to differentiate between multiple - instances. This is useful when you want to ensure that you can distinguish between different automatically created - instances. +- `ThrowWhenNotSetup` (bool): + - If `false` (default), the mock will return a default value (see `DefaultValue`), when no matching setup is found. + - If `true`, the mock will throw an exception when no matching setup is found. - `DefaultValue` (IDefaultValueGenerator): - Customizes how default values are generated for methods/properties that are not set up. - The default implementation provides sensible defaults for the most common use cases: @@ -64,7 +59,7 @@ var classMock = Mock.Create( - Completed tasks for `Task`, `Task`, `ValueTask` and `ValueTask` - Tuples with recursively defaulted values - `null` for other reference types - - You can provide custom default values for specific types using `.WithDefaultValueFor()`: + - You can add custom default value factories for specific types using `.WithDefaultValueFor()`: ```csharp var behavior = MockBehavior.Default .WithDefaultValueFor(() => "default") @@ -72,7 +67,12 @@ var classMock = Mock.Create( var sut = Mock.Create(behavior); ``` This is useful when you want mocks to return specific default values for certain types instead of the standard - defaults (e.g., `null`, `0`, empty strings). + defaults. +- `Initialize(params Action>[] setups)`: + - Automatically initialize all mocks of type T with the given setups when they are created. + - The callback can optionally receive an additional counter parameter which allows to differentiate between multiple + instances. This is useful when you want to ensure that you can distinguish between different automatically created + instances (e.g. when mocking databases). - `UseConstructorParametersFor(object?[])`: - Configures constructor parameters to use when creating mocks of type `T`, unless explicit parameters are provided during mock creation via `BaseClass.WithConstructorParameters(…)`. @@ -82,7 +82,7 @@ var classMock = Mock.Create( Use `Mock.Factory` to create multiple mocks with a shared behavior: ```csharp -var behavior = new MockBehavior { ThrowWhenNotSetup = true }; +var behavior = MockBehavior.Default with { ThrowWhenNotSetup = true }; var factory = new Mock.Factory(behavior); var sut1 = factory.Create(); @@ -98,7 +98,7 @@ You can wrap an existing instance with mock tracking using `Mock.Wrap()`. Thi a real object: ```csharp -var realDispenser = new ChocolateDispenser(); +var realDispenser = new MyChocolateDispenser(); var wrappedDispenser = Mock.Wrap(realDispenser); // Calls are forwarded to the real instance @@ -113,4 +113,5 @@ wrappedDispenser.VerifyMock.Invoked.Dispense(It.Is("Dark"), It.Is(5)).Once(); - Only interface types can be wrapped with `Mock.Wrap()`. - All calls are forwarded to the wrapped instance. - You can still set up custom behavior that overrides the wrapped instance's behavior. +- You cannot override protected members of the wrapped instance. - Verification works the same as with regular mocks. diff --git a/README.md b/README.md index fee03d5b..e1076662 100644 --- a/README.md +++ b/README.md @@ -115,7 +115,7 @@ var sut = Mock.Create(); You can control the default behavior of the mock by providing a `MockBehavior`: ```csharp -var strictMock = Mock.Create(new MockBehavior { ThrowWhenNotSetup = true }); +var strictMock = Mock.Create(MockBehavior.Default with { ThrowWhenNotSetup = true }); // For classes with constructor parameters and custom behavior: var classMock = Mock.Create( @@ -126,18 +126,13 @@ var classMock = Mock.Create( **`MockBehavior` options** -- `ThrowWhenNotSetup` (bool): - - If `false` (default), the mock will return a default value (see `DefaultValue`). - - If `true`, the mock will throw an exception when a method or property is called without a setup. - `SkipBaseClass` (bool): - If `false` (default), the mock will call the base class implementation and use its return values as default values, if no explicit setup is defined. - If `true`, the mock will not call any base class implementations. -- `Initialize(params Action>[] setups)`: - - Automatically initialize all mocks of type T with the given setups when they are created. - - The callback can optionally receive an additional counter parameter which allows to differentiate between multiple - instances. This is useful when you want to ensure that you can distinguish between different automatically created - instances. +- `ThrowWhenNotSetup` (bool): + - If `false` (default), the mock will return a default value (see `DefaultValue`), when no matching setup is found. + - If `true`, the mock will throw an exception when no matching setup is found. - `DefaultValue` (IDefaultValueGenerator): - Customizes how default values are generated for methods/properties that are not set up. - The default implementation provides sensible defaults for the most common use cases: @@ -146,7 +141,7 @@ var classMock = Mock.Create( - Completed tasks for `Task`, `Task`, `ValueTask` and `ValueTask` - Tuples with recursively defaulted values - `null` for other reference types - - You can provide custom default values for specific types using `.WithDefaultValueFor()`: + - You can add custom default value factories for specific types using `.WithDefaultValueFor()`: ```csharp var behavior = MockBehavior.Default .WithDefaultValueFor(() => "default") @@ -154,7 +149,12 @@ var classMock = Mock.Create( var sut = Mock.Create(behavior); ``` This is useful when you want mocks to return specific default values for certain types instead of the standard - defaults (e.g., `null`, `0`, empty strings). + defaults. +- `Initialize(params Action>[] setups)`: + - Automatically initialize all mocks of type T with the given setups when they are created. + - The callback can optionally receive an additional counter parameter which allows to differentiate between multiple + instances. This is useful when you want to ensure that you can distinguish between different automatically created + instances (e.g. when mocking databases). - `UseConstructorParametersFor(object?[])`: - Configures constructor parameters to use when creating mocks of type `T`, unless explicit parameters are provided during mock creation via `BaseClass.WithConstructorParameters(…)`. @@ -164,7 +164,7 @@ var classMock = Mock.Create( Use `Mock.Factory` to create multiple mocks with a shared behavior: ```csharp -var behavior = new MockBehavior { ThrowWhenNotSetup = true }; +var behavior = MockBehavior.Default with { ThrowWhenNotSetup = true }; var factory = new Mock.Factory(behavior); var sut1 = factory.Create(); @@ -180,7 +180,7 @@ You can wrap an existing instance with mock tracking using `Mock.Wrap()`. Thi a real object: ```csharp -var realDispenser = new ChocolateDispenser(); +var realDispenser = new MyChocolateDispenser(); var wrappedDispenser = Mock.Wrap(realDispenser); // Calls are forwarded to the real instance @@ -195,6 +195,7 @@ wrappedDispenser.VerifyMock.Invoked.Dispense(It.Is("Dark"), It.Is(5)).Once(); - Only interface types can be wrapped with `Mock.Wrap()`. - All calls are forwarded to the wrapped instance. - You can still set up custom behavior that overrides the wrapped instance's behavior. +- You cannot override protected members of the wrapped instance. - Verification works the same as with regular mocks. ## Setup From 1d9f6efc78de97bffb08f3775dd9a980c1d338ba Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Valentin=20Breu=C3=9F?= Date: Sun, 1 Feb 2026 09:13:56 +0100 Subject: [PATCH 3/6] Add Copilot suggestion --- Docs/pages/01-create-mocks.md | 7 ++++--- README.md | 7 ++++--- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/Docs/pages/01-create-mocks.md b/Docs/pages/01-create-mocks.md index 4ee08bb2..a2401a69 100644 --- a/Docs/pages/01-create-mocks.md +++ b/Docs/pages/01-create-mocks.md @@ -70,9 +70,10 @@ var classMock = Mock.Create( defaults. - `Initialize(params Action>[] setups)`: - Automatically initialize all mocks of type T with the given setups when they are created. - - The callback can optionally receive an additional counter parameter which allows to differentiate between multiple - instances. This is useful when you want to ensure that you can distinguish between different automatically created - instances (e.g. when mocking databases). + - The callback can optionally receive an additional counter parameter, allowing you to differentiate between multiple + automatically created instances. + For example, when initializing `IDbConnection` mocks, you can use the counter to assign different database names or + connection strings to each mock so they can be verified independently. - `UseConstructorParametersFor(object?[])`: - Configures constructor parameters to use when creating mocks of type `T`, unless explicit parameters are provided during mock creation via `BaseClass.WithConstructorParameters(…)`. diff --git a/README.md b/README.md index e1076662..e0fa946f 100644 --- a/README.md +++ b/README.md @@ -152,9 +152,10 @@ var classMock = Mock.Create( defaults. - `Initialize(params Action>[] setups)`: - Automatically initialize all mocks of type T with the given setups when they are created. - - The callback can optionally receive an additional counter parameter which allows to differentiate between multiple - instances. This is useful when you want to ensure that you can distinguish between different automatically created - instances (e.g. when mocking databases). + - The callback can optionally receive an additional counter parameter, allowing you to differentiate between multiple + automatically created instances. + For example, when initializing `IDbConnection` mocks, you can use the counter to assign different database names or + connection strings to each mock so they can be verified independently. - `UseConstructorParametersFor(object?[])`: - Configures constructor parameters to use when creating mocks of type `T`, unless explicit parameters are provided during mock creation via `BaseClass.WithConstructorParameters(…)`. From 993dfb30fdc2a52a00cb02f5dc34abbb092514b8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Valentin=20Breu=C3=9F?= Date: Sun, 1 Feb 2026 09:28:08 +0100 Subject: [PATCH 4/6] Add further improvements --- Docs/pages/00-index.md | 32 ++++++++++++++--------------- Docs/pages/01-create-mocks.md | 6 +++--- README.md | 38 +++++++++++++++++------------------ 3 files changed, 36 insertions(+), 40 deletions(-) diff --git a/Docs/pages/00-index.md b/Docs/pages/00-index.md index c57c9d20..6f92bda4 100644 --- a/Docs/pages/00-index.md +++ b/Docs/pages/00-index.md @@ -4,28 +4,26 @@ [![Nuget](https://img.shields.io/nuget/v/Mockolate)](https://www.nuget.org/packages/Mockolate) -**Mockolate** is a modern, strongly-typed mocking library for .NET, powered by source generators. It enables fast, -compile-time validated mocks for interfaces and classes, supporting .NET Standard 2.0, .NET 8, .NET 10, and .NET -Framework 4.8. +**Mockolate** is a modern, strongly-typed, AOT-compatible mocking library for .NET, powered by source generators. +It enables fast, compile-time validated mocking with .NET Standard 2.0, .NET 8, .NET 10 and .NET Framework 4.8. -- **Source generator-based**: No runtime proxy generation, fast and reliable. -- **Strongly-typed**: Setup and verify mocks with full IntelliSense and compile-time safety. +- **Source generator-based**: No runtime proxy generation. +- **Strongly-typed**: Compile-time safety and IntelliSense support. - **AOT compatible**: Works with NativeAOT and trimming. ## Getting Started -1. Check prerequisites - Although Mockolate supports multiple .NET Standard 2.0 compatible frameworks (including .NET Framework 4.8), you must - have the [.NET 10 SDK](https://dotnet.microsoft.com/en-us/download/dotnet/10.0) installed to build and compile - Mockolate. This is required because Mockolate - leverages [C# 14 extension members](https://learn.microsoft.com/en-us/dotnet/csharp/programming-guide/classes-and-structs/extension-methods#declare-extension-members). +1. **Check prerequisites** + Install the [.NET 10 SDK](https://dotnet.microsoft.com/en-us/download/dotnet/10.0), because Mockolate + leverages [C# 14 extension members](https://learn.microsoft.com/en-us/dotnet/csharp/programming-guide/classes-and-structs/extension-methods#declare-extension-members); + the projects can still target any supported framework. -2. Install the [`Mockolate`](https://www.nuget.org/packages/Mockolate) nuget package - ```ps +2. **Install the [`Mockolate`](https://www.nuget.org/packages/Mockolate) nuget package** + ```powershell dotnet add package Mockolate ``` -3. Create and use the mock +3. **Create and use a mock** ```csharp using Mockolate; @@ -39,7 +37,7 @@ Framework 4.8. } // Create a mock for IChocolateDispenser - var sut = Mock.Create(); + IChocolateDispenser sut = Mock.Create(); // Setup: Initial stock of 10 for Dark chocolate sut.SetupMock.Indexer(It.Is("Dark")).InitializeWith(10); @@ -47,7 +45,7 @@ Framework 4.8. sut.SetupMock.Method.Dispense(It.Is("Dark"), It.IsAny()) .Returns((type, amount) => { - var current = sut[type]; + int current = sut[type]; if (current >= amount) { sut[type] = current - amount; @@ -59,10 +57,10 @@ Framework 4.8. // Track dispensed amount via event int dispensedAmount = 0; - sut.ChocolateDispensed += (type, amount) + sut.ChocolateDispensed += (type, amount) => { dispensedAmount += amount; - } + }; // Act: Try to dispense chocolates bool gotChoc1 = sut.Dispense("Dark", 4); // true diff --git a/Docs/pages/01-create-mocks.md b/Docs/pages/01-create-mocks.md index a2401a69..b84136ed 100644 --- a/Docs/pages/01-create-mocks.md +++ b/Docs/pages/01-create-mocks.md @@ -5,13 +5,13 @@ You can create mocks for interfaces and classes. For classes without a default c ```csharp // Create a mock for an interface -var sut = Mock.Create(); +IChocolateDispenser sut = Mock.Create(); // Create a mock for a class -var classMock = Mock.Create(); +MyChocolateDispenser classMock = Mock.Create(); // For classes without a default constructor: -var classWithArgsMock = Mock.Create( +MyChocolateDispenserWithCtor classWithArgsMock = Mock.Create( BaseClass.WithConstructorParameters("Dark", 42) ); ``` diff --git a/README.md b/README.md index e0fa946f..090afb7a 100644 --- a/README.md +++ b/README.md @@ -8,28 +8,26 @@ [![Coverage](https://sonarcloud.io/api/project_badges/measure?project=aweXpect_Mockolate&metric=coverage)](https://sonarcloud.io/summary/overall?id=aweXpect_Mockolate) [![Mutation testing badge](https://img.shields.io/endpoint?style=flat&url=https%3A%2F%2Fbadge-api.stryker-mutator.io%2Fgithub.com%2FaweXpect%2FMockolate%2Fmain)](https://dashboard.stryker-mutator.io/reports/github.com/aweXpect/Mockolate/main) -**Mockolate** is a modern, strongly-typed, AOT-compatible mocking library for .NET, powered by source generators. It -enables fast, compile-time validated mocks for interfaces and classes, supporting .NET Standard 2.0, .NET 8, .NET 10, -and .NET Framework 4.8. +**Mockolate** is a modern, strongly-typed, AOT-compatible mocking library for .NET, powered by source generators. +It enables fast, compile-time validated mocking with .NET Standard 2.0, .NET 8, .NET 10 and .NET Framework 4.8. -- **Source generator-based**: No runtime proxy generation, fast and reliable. -- **Strongly-typed**: Setup and verify mocks with full IntelliSense and compile-time safety. +- **Source generator-based**: No runtime proxy generation. +- **Strongly-typed**: Compile-time safety and IntelliSense support. - **AOT compatible**: Works with NativeAOT and trimming. ## Getting Started -1. Check prerequisites - Although Mockolate supports multiple .NET Standard 2.0 compatible frameworks (including .NET Framework 4.8), you must - have the [.NET 10 SDK](https://dotnet.microsoft.com/en-us/download/dotnet/10.0) installed to build and compile - Mockolate. This is required because Mockolate - leverages [C# 14 extension members](https://learn.microsoft.com/en-us/dotnet/csharp/programming-guide/classes-and-structs/extension-methods#declare-extension-members). +1. **Check prerequisites** + Install the [.NET 10 SDK](https://dotnet.microsoft.com/en-us/download/dotnet/10.0), because Mockolate + leverages [C# 14 extension members](https://learn.microsoft.com/en-us/dotnet/csharp/programming-guide/classes-and-structs/extension-methods#declare-extension-members); + the projects can still target any supported framework. -2. Install the [`Mockolate`](https://www.nuget.org/packages/Mockolate) nuget package - ```ps +2. **Install the [`Mockolate`](https://www.nuget.org/packages/Mockolate) nuget package** + ```powershell dotnet add package Mockolate ``` -3. Create and use the mock +3. **Create and use a mock** ```csharp using Mockolate; @@ -43,7 +41,7 @@ and .NET Framework 4.8. } // Create a mock for IChocolateDispenser - var sut = Mock.Create(); + IChocolateDispenser sut = Mock.Create(); // Setup: Initial stock of 10 for Dark chocolate sut.SetupMock.Indexer(It.Is("Dark")).InitializeWith(10); @@ -51,7 +49,7 @@ and .NET Framework 4.8. sut.SetupMock.Method.Dispense(It.Is("Dark"), It.IsAny()) .Returns((type, amount) => { - var current = sut[type]; + int current = sut[type]; if (current >= amount) { sut[type] = current - amount; @@ -63,10 +61,10 @@ and .NET Framework 4.8. // Track dispensed amount via event int dispensedAmount = 0; - sut.ChocolateDispensed += (type, amount) + sut.ChocolateDispensed += (type, amount) => { dispensedAmount += amount; - } + }; // Act: Try to dispense chocolates bool gotChoc1 = sut.Dispense("Dark", 4); // true @@ -87,13 +85,13 @@ You can create mocks for interfaces and classes. For classes without a default c ```csharp // Create a mock for an interface -var sut = Mock.Create(); +IChocolateDispenser sut = Mock.Create(); // Create a mock for a class -var classMock = Mock.Create(); +MyChocolateDispenser classMock = Mock.Create(); // For classes without a default constructor: -var classWithArgsMock = Mock.Create( +MyChocolateDispenserWithCtor classWithArgsMock = Mock.Create( BaseClass.WithConstructorParameters("Dark", 42) ); ``` From f374f884a5b8c23ccf5038e80cc2cd0ae214046c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Valentin=20Breu=C3=9F?= Date: Sun, 1 Feb 2026 09:31:01 +0100 Subject: [PATCH 5/6] Review issues --- Docs/pages/00-index.md | 6 +++--- README.md | 5 ++--- 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/Docs/pages/00-index.md b/Docs/pages/00-index.md index 6f92bda4..3096989a 100644 --- a/Docs/pages/00-index.md +++ b/Docs/pages/00-index.md @@ -14,9 +14,9 @@ It enables fast, compile-time validated mocking with .NET Standard 2.0, .NET 8, ## Getting Started 1. **Check prerequisites** - Install the [.NET 10 SDK](https://dotnet.microsoft.com/en-us/download/dotnet/10.0), because Mockolate - leverages [C# 14 extension members](https://learn.microsoft.com/en-us/dotnet/csharp/programming-guide/classes-and-structs/extension-methods#declare-extension-members); - the projects can still target any supported framework. + Install the [.NET 10 SDK](https://dotnet.microsoft.com/en-us/download/dotnet/10.0), because Mockolate leverages + C# 14 extension members (the projects can still target any supported framework). + 2. **Install the [`Mockolate`](https://www.nuget.org/packages/Mockolate) nuget package** ```powershell diff --git a/README.md b/README.md index 090afb7a..bdb7e008 100644 --- a/README.md +++ b/README.md @@ -18,9 +18,8 @@ It enables fast, compile-time validated mocking with .NET Standard 2.0, .NET 8, ## Getting Started 1. **Check prerequisites** - Install the [.NET 10 SDK](https://dotnet.microsoft.com/en-us/download/dotnet/10.0), because Mockolate - leverages [C# 14 extension members](https://learn.microsoft.com/en-us/dotnet/csharp/programming-guide/classes-and-structs/extension-methods#declare-extension-members); - the projects can still target any supported framework. + Install the [.NET 10 SDK](https://dotnet.microsoft.com/en-us/download/dotnet/10.0), because Mockolate leverages + C# 14 extension members (the projects can still target any supported framework). 2. **Install the [`Mockolate`](https://www.nuget.org/packages/Mockolate) nuget package** ```powershell From e1cbe0be91188f0e1e9cb46ac3070478d48cd827 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Valentin=20Breu=C3=9F?= Date: Sun, 1 Feb 2026 09:37:12 +0100 Subject: [PATCH 6/6] Remove unnecessary link --- Docs/pages/00-index.md | 3 +-- README.md | 2 +- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/Docs/pages/00-index.md b/Docs/pages/00-index.md index 3096989a..d1122f47 100644 --- a/Docs/pages/00-index.md +++ b/Docs/pages/00-index.md @@ -17,8 +17,7 @@ It enables fast, compile-time validated mocking with .NET Standard 2.0, .NET 8, Install the [.NET 10 SDK](https://dotnet.microsoft.com/en-us/download/dotnet/10.0), because Mockolate leverages C# 14 extension members (the projects can still target any supported framework). - -2. **Install the [`Mockolate`](https://www.nuget.org/packages/Mockolate) nuget package** +2. **Install the package** ```powershell dotnet add package Mockolate ``` diff --git a/README.md b/README.md index bdb7e008..dd150383 100644 --- a/README.md +++ b/README.md @@ -21,7 +21,7 @@ It enables fast, compile-time validated mocking with .NET Standard 2.0, .NET 8, Install the [.NET 10 SDK](https://dotnet.microsoft.com/en-us/download/dotnet/10.0), because Mockolate leverages C# 14 extension members (the projects can still target any supported framework). -2. **Install the [`Mockolate`](https://www.nuget.org/packages/Mockolate) nuget package** +2. **Install the package** ```powershell dotnet add package Mockolate ```