diff --git a/Tests/Connector/Reqnroll.VisualStudio.ReqnrollConnector.Tests/ImplicitUsings.cs b/Tests/Connector/Reqnroll.VisualStudio.ReqnrollConnector.Tests/ImplicitUsings.cs
index 40a010c6..53091fdb 100644
--- a/Tests/Connector/Reqnroll.VisualStudio.ReqnrollConnector.Tests/ImplicitUsings.cs
+++ b/Tests/Connector/Reqnroll.VisualStudio.ReqnrollConnector.Tests/ImplicitUsings.cs
@@ -3,7 +3,7 @@
global using ApprovalTests.Reporters;
global using Castle.DynamicProxy.Generators.Emitters;
global using FluentAssertions;
-global using Moq;
+global using NSubstitute;
global using ReqnrollConnector;
global using ReqnrollConnector.Discovery;
global using ReqnrollConnector.Logging;
diff --git a/Tests/Connector/Reqnroll.VisualStudio.ReqnrollConnector.Tests/Reqnroll.VisualStudio.ReqnrollConnector.Tests.csproj b/Tests/Connector/Reqnroll.VisualStudio.ReqnrollConnector.Tests/Reqnroll.VisualStudio.ReqnrollConnector.Tests.csproj
index 1e09c057..e4a18cc7 100644
--- a/Tests/Connector/Reqnroll.VisualStudio.ReqnrollConnector.Tests/Reqnroll.VisualStudio.ReqnrollConnector.Tests.csproj
+++ b/Tests/Connector/Reqnroll.VisualStudio.ReqnrollConnector.Tests/Reqnroll.VisualStudio.ReqnrollConnector.Tests.csproj
@@ -15,7 +15,7 @@
-
+
all
runtime; build; native; contentfiles; analyzers; buildtransitive
diff --git a/Tests/Reqnroll.VisualStudio.Specs/ImplicitUsings.cs b/Tests/Reqnroll.VisualStudio.Specs/ImplicitUsings.cs
index 79bd68ef..f87e0425 100644
--- a/Tests/Reqnroll.VisualStudio.Specs/ImplicitUsings.cs
+++ b/Tests/Reqnroll.VisualStudio.Specs/ImplicitUsings.cs
@@ -6,7 +6,7 @@
global using Microsoft.VisualStudio.Text.Editor;
global using Microsoft.VisualStudio.Text.Tagging;
global using Microsoft.VisualStudio.Threading;
-global using Moq;
+global using NSubstitute;
global using Reqnroll.SampleProjectGenerator;
global using Reqnroll.VisualStudio.Common;
global using Reqnroll.VisualStudio.Configuration;
diff --git a/Tests/Reqnroll.VisualStudio.Specs/Reqnroll.VisualStudio.Specs.csproj b/Tests/Reqnroll.VisualStudio.Specs/Reqnroll.VisualStudio.Specs.csproj
index 83c94561..75f1af88 100644
--- a/Tests/Reqnroll.VisualStudio.Specs/Reqnroll.VisualStudio.Specs.csproj
+++ b/Tests/Reqnroll.VisualStudio.Specs/Reqnroll.VisualStudio.Specs.csproj
@@ -9,7 +9,7 @@
-
+
diff --git a/Tests/Reqnroll.VisualStudio.Specs/StepDefinitions/DeveroomSteps.cs b/Tests/Reqnroll.VisualStudio.Specs/StepDefinitions/DeveroomSteps.cs
index e275c27b..78bb18fe 100644
--- a/Tests/Reqnroll.VisualStudio.Specs/StepDefinitions/DeveroomSteps.cs
+++ b/Tests/Reqnroll.VisualStudio.Specs/StepDefinitions/DeveroomSteps.cs
@@ -15,11 +15,8 @@ public DeveroomSteps(ITestOutputHelper outputHelper, StubIdeScope stubIdeScope)
{
_outputHelper = outputHelper;
_stubIdeScope = stubIdeScope;
-
- _stubIdeScope.Setup(s =>
- s.FireAndForgetOnBackgroundThread(It.IsAny>(), It.IsAny()))
- .Callback(FireAndForgetCallBack);
-
+ _stubIdeScope.SetupFireAndForgetOnBackgroundThread(FireAndForgetCallBack);
+
async void FireAndForgetCallBack(Func action, string _)
{
try
diff --git a/Tests/Reqnroll.VisualStudio.Specs/StepDefinitions/ProjectSystemSteps.cs b/Tests/Reqnroll.VisualStudio.Specs/StepDefinitions/ProjectSystemSteps.cs
index da02879f..b6dd9d44 100644
--- a/Tests/Reqnroll.VisualStudio.Specs/StepDefinitions/ProjectSystemSteps.cs
+++ b/Tests/Reqnroll.VisualStudio.Specs/StepDefinitions/ProjectSystemSteps.cs
@@ -1,7 +1,4 @@
#nullable disable
-using Microsoft.Build.Framework.XamlTypes;
-using ScenarioBlock = Reqnroll.VisualStudio.Editor.Services.Parser.ScenarioBlock;
-
namespace Reqnroll.VisualStudio.Specs.StepDefinitions;
[Binding]
@@ -21,10 +18,7 @@ public class ProjectSystemSteps : Steps
public ProjectSystemSteps(StubIdeScope stubIdeScope)
{
_ideScope = stubIdeScope;
- _ideScope.Setup(s =>
- s.FireAndForgetOnBackgroundThread(It.IsAny>(), It.IsAny()))
- .Callback((Func action, string _) =>
- action(_ideScope.BackgroundTaskTokenSource.Token));
+ _ideScope.SetupFireAndForgetOnBackgroundThread((action, callerName) => action(_ideScope.BackgroundTaskTokenSource.Token));
}
private StubIdeActions ActionsMock => (StubIdeActions) _ideScope.Actions;
diff --git a/Tests/Reqnroll.VisualStudio.Tests/Analytics/AnalyticsTransmitterTests.cs b/Tests/Reqnroll.VisualStudio.Tests/Analytics/AnalyticsTransmitterTests.cs
index 98a8ae16..69e8110a 100644
--- a/Tests/Reqnroll.VisualStudio.Tests/Analytics/AnalyticsTransmitterTests.cs
+++ b/Tests/Reqnroll.VisualStudio.Tests/Analytics/AnalyticsTransmitterTests.cs
@@ -6,8 +6,8 @@ namespace Reqnroll.VisualStudio.Tests.Analytics;
public class AnalyticsTransmitterTests
{
- private Mock analyticsTransmitterSinkStub;
- private Mock enableAnalyticsCheckerStub;
+ private IAnalyticsTransmitterSink analyticsTransmitterSinkStub;
+ private IEnableAnalyticsChecker enableAnalyticsCheckerStub;
[Fact]
public void Should_NotSendAnalytics_WhenDisabled()
@@ -15,10 +15,10 @@ public void Should_NotSendAnalytics_WhenDisabled()
var sut = CreateSut();
GivenAnalyticsDisabled();
- sut.TransmitEvent(It.IsAny());
+ sut.TransmitEvent(Substitute.For());
- enableAnalyticsCheckerStub.Verify(analyticsChecker => analyticsChecker.IsEnabled(), Times.Once);
- analyticsTransmitterSinkStub.Verify(sink => sink.TransmitEvent(It.IsAny()), Times.Never);
+ enableAnalyticsCheckerStub.Received(1).IsEnabled();
+ analyticsTransmitterSinkStub.DidNotReceive().TransmitEvent(Arg.Any());
}
[Fact]
@@ -27,10 +27,10 @@ public void Should_SendAnalytics_WhenEnabled()
var sut = CreateSut();
GivenAnalyticsEnabled();
- sut.TransmitEvent(It.IsAny());
+ sut.TransmitEvent(Substitute.For());
- enableAnalyticsCheckerStub.Verify(analyticsChecker => analyticsChecker.IsEnabled(), Times.Once);
- analyticsTransmitterSinkStub.Verify(sink => sink.TransmitEvent(It.IsAny()), Times.Once);
+ enableAnalyticsCheckerStub.Received(1).IsEnabled();
+ analyticsTransmitterSinkStub.Received(1).TransmitEvent(Arg.Any());
}
[Theory]
@@ -44,24 +44,23 @@ public void Should_TransmitEvents(string eventName)
sut.TransmitEvent(new GenericEvent(eventName));
- analyticsTransmitterSinkStub.Verify(
- sink => sink.TransmitEvent(It.Is(ae => ae.EventName == eventName)), Times.Once);
+ analyticsTransmitterSinkStub.Received(1).TransmitEvent(Arg.Is(ae => ae.EventName == eventName));
}
private void GivenAnalyticsEnabled()
{
- enableAnalyticsCheckerStub.Setup(analyticsChecker => analyticsChecker.IsEnabled()).Returns(true);
+ enableAnalyticsCheckerStub.IsEnabled().Returns(true);
}
private void GivenAnalyticsDisabled()
{
- enableAnalyticsCheckerStub.Setup(analyticsChecker => analyticsChecker.IsEnabled()).Returns(false);
+ enableAnalyticsCheckerStub.IsEnabled().Returns(false);
}
public AnalyticsTransmitter CreateSut()
{
- analyticsTransmitterSinkStub = new Mock();
- enableAnalyticsCheckerStub = new Mock();
- return new AnalyticsTransmitter(analyticsTransmitterSinkStub.Object, enableAnalyticsCheckerStub.Object);
+ analyticsTransmitterSinkStub = Substitute.For();
+ enableAnalyticsCheckerStub = Substitute.For();
+ return new AnalyticsTransmitter(analyticsTransmitterSinkStub, enableAnalyticsCheckerStub);
}
}
diff --git a/Tests/Reqnroll.VisualStudio.Tests/Analytics/FileUserIdStoreTests.cs b/Tests/Reqnroll.VisualStudio.Tests/Analytics/FileUserIdStoreTests.cs
index 10dfe1b9..65cbcaca 100644
--- a/Tests/Reqnroll.VisualStudio.Tests/Analytics/FileUserIdStoreTests.cs
+++ b/Tests/Reqnroll.VisualStudio.Tests/Analytics/FileUserIdStoreTests.cs
@@ -4,7 +4,7 @@ namespace Reqnroll.VisualStudio.Tests.Analytics;
public class FileUserIdStoreTests
{
private const string UserId = "491ed5c0-9f25-4c27-941a-19b17cc81c87";
- private Mock fileSystemStub;
+ private IFileSystemForVs fileSystemStub;
[Fact]
public void Should_GetUserIdFromFile_WhenFileExists()
@@ -29,30 +29,29 @@ public void Should_PersistNewlyGeneratedUserId_WhenNoUserIdExists()
string userId = sut.GetUserId();
userId.Should().NotBeEmpty();
- fileSystemStub.Verify(fileSystem => fileSystem.File.WriteAllText(FileUserIdStore.UserIdFilePath, userId),
- Times.Once());
+ fileSystemStub.File.Received(1).WriteAllText(FileUserIdStore.UserIdFilePath, userId);
}
public FileUserIdStore CreateSut()
{
- fileSystemStub = new Mock();
- return new FileUserIdStore(fileSystemStub.Object);
+ fileSystemStub = Substitute.For();
+ return new FileUserIdStore(fileSystemStub);
}
private void GivenFileExists()
{
- fileSystemStub.Setup(fileSystem => fileSystem.File.Exists(It.IsAny())).Returns(true);
+ fileSystemStub.File.Exists(Arg.Any()).Returns(true);
}
private void GivenFileDoesNotExists()
{
- fileSystemStub.Setup(fileSystem => fileSystem.File.Exists(It.IsAny())).Returns(false);
- fileSystemStub.Setup(fileSystem => fileSystem.Directory.Exists(It.IsAny())).Returns(true);
+ fileSystemStub.File.Exists(Arg.Any()).Returns(false);
+ fileSystemStub.Directory.Exists(Arg.Any()).Returns(true);
}
private void GivenUserIdStringInFile(string userIdString)
{
- fileSystemStub.Setup(fileSystem => fileSystem.File.ReadAllText(It.IsAny())).Returns(userIdString);
+ fileSystemStub.File.ReadAllText(Arg.Any()).Returns(userIdString);
}
}
diff --git a/Tests/Reqnroll.VisualStudio.Tests/Discovery/DiscoveryTests.cs b/Tests/Reqnroll.VisualStudio.Tests/Discovery/DiscoveryTests.cs
index afa388f9..c8d3ed7c 100644
--- a/Tests/Reqnroll.VisualStudio.Tests/Discovery/DiscoveryTests.cs
+++ b/Tests/Reqnroll.VisualStudio.Tests/Discovery/DiscoveryTests.cs
@@ -21,20 +21,16 @@ public DiscoveryTests(ITestOutputHelper testOutputHelper)
private Sut ArrangeSut()
{
- var bindingRegistryCache = new StubProjectBindingRegistryCache();
+ var bindingRegistryCache = Substitute.ForPartsOf();
var projectScope = new InMemoryStubProjectScope(_testOutputHelper);
var discoveryResultProvider = new StubDiscoveryResultProvider();
#pragma warning disable VSTHRD002
- projectScope.StubIdeScope
- .Setup(
- s => s.FireAndForgetOnBackgroundThread(It.IsAny>(), It.IsAny()))
- .Callback((Func action, string _)
- => action(projectScope.StubIdeScope.BackgroundTaskTokenSource.Token).Wait());
+ projectScope.StubIdeScope.SetupFireAndForgetOnBackgroundThread((action, callerName) => action(projectScope.StubIdeScope.BackgroundTaskTokenSource.Token).Wait());
#pragma warning restore VSTHRD002
InMemoryStubProjectBuilder.CreateOutputAssembly(projectScope);
- return new Sut(bindingRegistryCache, projectScope, discoveryResultProvider);
+ return Substitute.For(bindingRegistryCache, projectScope, discoveryResultProvider);
}
[Fact]
@@ -48,8 +44,7 @@ public void TriggerDiscoveryUpdatesTheCache()
discoveryService.TriggerDiscovery();
//assert
- sut.BindingRegistryCache.Verify(c =>
- c.Update(It.IsAny>>()));
+ sut.BindingRegistryCache.Received().Update(Arg.Any>>());
sut.BindingRegistryCache.Value.Version.Should().NotBe(1);
}
@@ -65,8 +60,7 @@ public void TriggersCacheUpdateOnEvents(LabeledTestData> triggerEven
triggerEvent.Data(sut);
//assert
- sut.BindingRegistryCache.Verify(c =>
- c.Update(It.IsAny>>()));
+ sut.BindingRegistryCache.Received().Update(Arg.Any>>());
sut.BindingRegistryCache.Value.Version.Should().NotBe(1);
}
@@ -84,9 +78,7 @@ public void DoNotTriggersCacheUpdateOnEventsForTheSameProject(LabeledTestData
- c.Update(It.IsAny>>()), Times.Once,
- "the cache update have to be called only once when the project haven't changed");
+ sut.BindingRegistryCache.Received(1).Update(Arg.Any>>()); // the cache update have to be called only once when the project haven't changed
sut.BindingRegistryCache.Value.Should().BeSameAs(bindingRegistry, "the cache must not be modified");
sut.ProjectScope.StubIdeScope.StubLogger.Messages.Where(m => m == "Projects built or settings initialized")
.Should().HaveCount(2, "the event is fired twice");
diff --git a/Tests/Reqnroll.VisualStudio.Tests/Discovery/ProjectBindingRegistryCacheTests.cs b/Tests/Reqnroll.VisualStudio.Tests/Discovery/ProjectBindingRegistryCacheTests.cs
index 2ac66c92..70721f44 100644
--- a/Tests/Reqnroll.VisualStudio.Tests/Discovery/ProjectBindingRegistryCacheTests.cs
+++ b/Tests/Reqnroll.VisualStudio.Tests/Discovery/ProjectBindingRegistryCacheTests.cs
@@ -72,16 +72,16 @@ public void ParallelUpdate()
{
//arrange
var start = DateTimeOffset.UtcNow;
- var ideScope = new Mock(MockBehavior.Strict);
+ var ideScope = Substitute.For();
var stubLogger = new StubLogger();
var logger = new DeveroomCompositeLogger();
logger.Add(new DeveroomXUnitLogger(_testOutputHelper));
logger.Add(stubLogger);
- ideScope.SetupGet(s => s.Logger).Returns(logger);
- ideScope.Setup(s => s.CalculateSourceLocationTrackingPositions(It.IsAny>()));
+ ideScope.Logger.Returns(logger);
+ ideScope.CalculateSourceLocationTrackingPositions(Arg.Any>());
- var projectBindingRegistryCache = new ProjectBindingRegistryCache(ideScope.Object);
+ var projectBindingRegistryCache = new ProjectBindingRegistryCache(ideScope);
var oldVersions = new ConcurrentQueue();
var initialRegistry = new ProjectBindingRegistry(Array.Empty(), Array.Empty(), 123456);
diff --git a/Tests/Reqnroll.VisualStudio.Tests/Editor/Commands/CommentUncommentCommandTests.cs b/Tests/Reqnroll.VisualStudio.Tests/Editor/Commands/CommentUncommentCommandTests.cs
index 93706bd5..2a6f2151 100644
--- a/Tests/Reqnroll.VisualStudio.Tests/Editor/Commands/CommentUncommentCommandTests.cs
+++ b/Tests/Reqnroll.VisualStudio.Tests/Editor/Commands/CommentUncommentCommandTests.cs
@@ -7,7 +7,7 @@ public class CommentUncommentCommandTests
public CommentUncommentCommandTests(ITestOutputHelper testOutputHelper)
{
- _taggerProvider = new Mock().Object;
+ _taggerProvider = Substitute.For();
_ideScope = new StubIdeScope(testOutputHelper);
}
diff --git a/Tests/Reqnroll.VisualStudio.Tests/Editor/Services/DeveroomGherkinParserTests.cs b/Tests/Reqnroll.VisualStudio.Tests/Editor/Services/DeveroomGherkinParserTests.cs
index 7f11707f..d3ccc3a9 100644
--- a/Tests/Reqnroll.VisualStudio.Tests/Editor/Services/DeveroomGherkinParserTests.cs
+++ b/Tests/Reqnroll.VisualStudio.Tests/Editor/Services/DeveroomGherkinParserTests.cs
@@ -9,7 +9,7 @@ public class DeveroomGherkinParserTests
public void Should_provide_parse_result_when_unexpected_end_of_file()
{
var sut = new DeveroomGherkinParser(new ReqnrollGherkinDialectProvider("en-US"),
- new Mock().Object);
+ Substitute.For());
var result = sut.ParseAndCollectErrors(@"
Feature: Addition
@@ -24,7 +24,7 @@ public void Should_provide_parse_result_when_unexpected_end_of_file()
public void Should_tolerate_backslash_at_end_of_line_in_DataTable()
{
var sut = new DeveroomGherkinParser(new ReqnrollGherkinDialectProvider("en-US"),
- new Mock().Object);
+ Substitute.For());
var result = sut.ParseAndCollectErrors(@"
Feature: Addition
@@ -42,7 +42,7 @@ When I press
public void Should_tolerate_unfinished_DataTable()
{
var sut = new DeveroomGherkinParser(new ReqnrollGherkinDialectProvider("en-US"),
- new Mock().Object);
+ Substitute.For());
var result = sut.ParseAndCollectErrors(@"
Feature: Addition
@@ -60,7 +60,7 @@ When I press
public void Should_provide_parse_result_when_file_ends_with_open_docstring()
{
var sut = new DeveroomGherkinParser(new ReqnrollGherkinDialectProvider("en-US"),
- new Mock().Object);
+ Substitute.For());
var result = sut.ParseAndCollectErrors(@"
Feature: Addition
diff --git a/Tests/Reqnroll.VisualStudio.Tests/Editor/Services/FeatureFileTaggerTests.cs b/Tests/Reqnroll.VisualStudio.Tests/Editor/Services/FeatureFileTaggerTests.cs
index c5f6a500..ebb82dea 100644
--- a/Tests/Reqnroll.VisualStudio.Tests/Editor/Services/FeatureFileTaggerTests.cs
+++ b/Tests/Reqnroll.VisualStudio.Tests/Editor/Services/FeatureFileTaggerTests.cs
@@ -15,8 +15,8 @@ public void Parse_triggered_in_background_after_instantiation()
//arrange
using var sut = TaggerSut.Arrange(_testOutputHelper);
var parserInvoked = false;
- sut.TagParser.Setup(s => s.Parse(It.IsAny()))
- .Returns(() =>
+ sut.TagParser.Parse(Arg.Any())
+ .Returns(_ =>
{
parserInvoked = true;
return ImmutableArray.Empty;
@@ -40,11 +40,12 @@ public void GetTags_returns_with_the_parsed_values()
IReadOnlyCollection parseResult = ImmutableArray.Empty;
sut.TagParser
- .Setup(s => s.Parse(It.IsAny()))
- .Returns(snapShot =>
+ .Parse(Arg.Any())
+ .Returns(callInfo =>
{
+ var snapshot = callInfo.Arg();
return parseResult = Enumerable
- .Repeat(() => new DeveroomTag(string.Empty, new SnapshotSpan(snapShot, 0, 0)), 10)
+ .Repeat(() => new DeveroomTag(string.Empty, new SnapshotSpan(snapshot, 0, 0)), 10)
.Select(d => d())
.ToImmutableArray();
});
@@ -94,13 +95,13 @@ public void Parsed_once_only_when_TextBuffer_ChangedOnBackground_fired_multiple_
using var sut = TaggerSut.Arrange(_testOutputHelper);
sut.BuildInitializedFeatureFileTagger();
- sut.TagParser.Verify(s => s.Parse(It.IsAny()), Times.Once);
+ sut.TagParser.Received(1).Parse(Arg.Any());
//act
sut.StubTextBuffer.InvokeChangedOnBackground();
//assert
- sut.TagParser.Verify(s => s.Parse(It.IsAny()), Times.Exactly(2));
+ sut.TagParser.Received(2).Parse(Arg.Any());
}
[Fact]
@@ -112,12 +113,13 @@ public void GetTags_does_not_trigger_parse()
IReadOnlyCollection parseResult = ImmutableArray.Create(VoidDeveroomTag.Instance);
sut.TagParser
- .Setup(s => s.Parse(It.IsAny()))
- .Returns(snapShot =>
+ .Parse(Arg.Any())
+ .Returns(callInfo =>
{
+ var snapshot = callInfo.Arg();
parseResult.Should().HaveCount(1, "the initial parse is called only");
return parseResult = Enumerable
- .Repeat(() => new DeveroomTag(string.Empty, new SnapshotSpan(snapShot, 0, 0)), 10)
+ .Repeat(() => new DeveroomTag(string.Empty, new SnapshotSpan(snapshot, 0, 0)), 10)
.Select(d => d())
.ToImmutableArray();
});
@@ -157,13 +159,14 @@ DeveroomTag TagFactory(int i, ITextSnapshot snapshot)
}
sut.TagParser
- .Setup(s => s.Parse(It.IsAny()))
- .Returns(snapshot =>
+ .Parse(Arg.Any())
+ .Returns(callInfo =>
{
+ var snapshot = callInfo.Arg();
parseResult.Should().BeEmpty("the initial parse is called only");
return parseResult = Enumerable.Range(0, 10)
- .Select(i => TagFactory(i, snapshot))
- .ToImmutableArray();
+ .Select(i => TagFactory(i, snapshot))
+ .ToImmutableArray();
});
var tagger = sut.BuildInitializedFeatureFileTagger();
@@ -183,13 +186,13 @@ public void Reparse_when_binding_registry_is_changed()
{
//arrange
using var sut = TaggerSut.Arrange(_testOutputHelper);
- var discoveryService = new Mock(MockBehavior.Strict);
- sut.ProjectScope.Properties.AddProperty(typeof(IDiscoveryService), discoveryService.Object);
+ var discoveryService = Substitute.For();
+ sut.ProjectScope.Properties.AddProperty(typeof(IDiscoveryService), discoveryService);
sut.BuildInitializedFeatureFileTagger();
sut.WaitForTagsChangedEvent();
//act
- discoveryService.Raise(ds => ds.WeakBindingRegistryChanged -= null!, EventArgs.Empty);
+ discoveryService.WeakBindingRegistryChanged -= Raise.Event>(EventArgs.Empty);
//assert
sut.WaitForTagsChangedEvent().Should().HaveCount(2);
@@ -223,25 +226,26 @@ public void Deregister_events_when_TextBuffer_is_not_a_feature_file()
{
//arrange
using var sut = TaggerSut.Arrange(_testOutputHelper);
- var configurationProvider = new Mock(MockBehavior.Strict);
+ var configurationProvider = Substitute.For();
sut.ProjectScope.Properties.RemoveProperty(typeof(IDeveroomConfigurationProvider));
- sut.ProjectScope.Properties.AddProperty(typeof(IDeveroomConfigurationProvider), configurationProvider.Object);
- var discoveryService = new Mock(MockBehavior.Strict);
- sut.ProjectScope.Properties.AddProperty(typeof(IDiscoveryService), discoveryService.Object);
+ sut.ProjectScope.Properties.AddProperty(typeof(IDeveroomConfigurationProvider), configurationProvider);
+
+ var discoveryService = Substitute.For();
+ sut.ProjectScope.Properties.AddProperty(typeof(IDiscoveryService), discoveryService);
sut.BuildFeatureFileTagger();
//act
- sut.StubTextBuffer.StubContentType = sut.StubTextBuffer.StubContentType with {TypeName = "inert"};
- discoveryService.Raise(ds => ds.WeakBindingRegistryChanged -= null!, EventArgs.Empty);
+ sut.StubTextBuffer.StubContentType = sut.StubTextBuffer.StubContentType with { TypeName = "inert" };
+ discoveryService.WeakBindingRegistryChanged -= Raise.Event>(EventArgs.Empty);
//assert
sut.StubTextBuffer.Properties.TryGetProperty>(typeof(ITagger), out var _)
- .Should()
- .BeFalse();
- discoveryService.VerifyRemove(m => m.WeakBindingRegistryChanged -= It.IsAny>());
- configurationProvider.VerifyRemove(m => m.WeakConfigurationChanged -= It.IsAny>());
- sut.StubTextBuffer.VerifyRemove(
- tb => tb.ChangedOnBackground -= It.IsAny>());
+ .Should()
+ .BeFalse();
+
+ discoveryService.Received().WeakBindingRegistryChanged -= Arg.Any>();
+ configurationProvider.Received().WeakConfigurationChanged -= Arg.Any>();
+ sut.StubTextBuffer.Received().ChangedOnBackground -= Arg.Any>();
}
[Fact]
diff --git a/Tests/Reqnroll.VisualStudio.Tests/Editor/Services/GherkinDocumentFormatterTests.cs b/Tests/Reqnroll.VisualStudio.Tests/Editor/Services/GherkinDocumentFormatterTests.cs
index 2754daba..32c29070 100644
--- a/Tests/Reqnroll.VisualStudio.Tests/Editor/Services/GherkinDocumentFormatterTests.cs
+++ b/Tests/Reqnroll.VisualStudio.Tests/Editor/Services/GherkinDocumentFormatterTests.cs
@@ -9,13 +9,13 @@ public class GherkinDocumentFormatterTests
private DeveroomGherkinDocument ParseGherkinDocument(TestText inputText)
{
var parser = new DeveroomGherkinParser(new ReqnrollGherkinDialectProvider("en-US"),
- new Mock().Object);
+ Substitute.For());
parser.ParseAndCollectErrors(inputText.ToString(), new DeveroomNullLogger(), out var gherkinDocument, out _);
return gherkinDocument;
}
private DocumentLinesEditBuffer GetLinesBuffer(TestText inputText) =>
- new(new Mock().Object, 0, inputText.Lines.Length - 1,
+ new(Substitute.For(), 0, inputText.Lines.Length - 1,
inputText.Lines);
[Fact]
diff --git a/Tests/Reqnroll.VisualStudio.Tests/Editor/Services/TaggerSut.cs b/Tests/Reqnroll.VisualStudio.Tests/Editor/Services/TaggerSut.cs
index e94f3602..8183beb9 100644
--- a/Tests/Reqnroll.VisualStudio.Tests/Editor/Services/TaggerSut.cs
+++ b/Tests/Reqnroll.VisualStudio.Tests/Editor/Services/TaggerSut.cs
@@ -1,7 +1,7 @@
namespace Reqnroll.VisualStudio.Tests.Editor.Services;
public record TaggerSut
- (IProjectScope ProjectScope, StubIdeScope IdeScope, Mock TagParser) : IDisposable
+ (IProjectScope ProjectScope, StubIdeScope IdeScope, IDeveroomTagParser TagParser) : IDisposable
{
private readonly ManualResetEvent _tagsChanged = new(false);
private readonly List _tagsChangedEvents = new();
@@ -27,16 +27,16 @@ public void Dispose()
public static TaggerSut Arrange(ITestOutputHelper testOutputHelper)
{
var projectScope = new InMemoryStubProjectScope(testOutputHelper);
- var tagParser = new Mock(MockBehavior.Strict);
+ var tagParser = Substitute.For();
var deveroomTags = ImmutableArray.Empty;
tagParser
- .Setup(s => s.Parse(It.IsAny()))
- .Callback(fileSnapshot => { projectScope.IdeScope.Logger.Trace($"Parsing {fileSnapshot}"); })
- .Returns(deveroomTags);
+ .Parse(Arg.Any())
+ .Returns(deveroomTags)
+ .AndDoes(callInfo => { projectScope.IdeScope.Logger.Trace($"Parsing {callInfo.Arg()}"); });
projectScope.StubIdeScope.TextViewFactory =
- (inputText, filePath) => new StubWpfTextView(new StubTextBuffer(projectScope));
+ (inputText, filePath) => new StubWpfTextView(Substitute.ForPartsOf(projectScope));
var sut = new TaggerSut(projectScope, projectScope.StubIdeScope, tagParser);
@@ -54,7 +54,7 @@ public ITagger BuildInitializedFeatureFileTagger()
public ITagger BuildFeatureFileTagger()
{
- ProjectScope.Properties.AddProperty(typeof(IDeveroomTagParser), TagParser.Object);
+ ProjectScope.Properties.AddProperty(typeof(IDeveroomTagParser), TagParser);
var taggerProvider = new DeveroomTaggerProvider(IdeScope, new SpecFlowExtensionDetection.SpecFlowExtensionDetectionService(IdeScope));
var tagger = BuildTagger(taggerProvider);
@@ -69,7 +69,7 @@ private T BuildTagger(DeveroomTaggerProvider taggerProvider) where T : ITagge
IdeScope.CreateTextView(new TestText(Array.Empty()),
IdeScope.ProjectScopes.Select(p => p.ProjectFullName).DefaultIfEmpty(string.Empty).Single());
- var tagger = (T) taggerProvider.CreateTagger(IdeScope.CurrentTextView.TextBuffer);
+ var tagger = (T)taggerProvider.CreateTagger(IdeScope.CurrentTextView.TextBuffer);
return tagger;
}
@@ -109,19 +109,17 @@ public TaggerSut WithRealDeveroomTagParser()
var discoveryService = ProjectScope.GetDiscoveryService();
var realParser = new DeveroomTagParser(IdeScope.Logger, IdeScope.MonitoringService,
deveroomConfigurationProvider, discoveryService);
- var tagParserMock = new Mock(MockBehavior.Strict);
- tagParserMock.Setup(s => s.Parse(
- It.IsAny()))
- .Returns((ITextSnapshot fileSnapshot)
- => realParser.Parse(fileSnapshot));
+ var tagParserMock = Substitute.For();
+ tagParserMock.Parse(Arg.Any())
+ .Returns(callInfo => realParser.Parse(callInfo.Arg()));
- return this with {TagParser = tagParserMock};
+ return this with { TagParser = tagParserMock };
}
public TaggerSut WithoutProject()
{
var voidProjectScope = new VoidProjectScope(IdeScope);
- var withoutProject = this with {ProjectScope = voidProjectScope};
+ var withoutProject = this with { ProjectScope = voidProjectScope };
IdeScope.ProjectScopes.Clear();
IdeScope.TextViewFactory =
(inputText, filePath) => new StubWpfTextView(new StubTextBuffer(voidProjectScope));
diff --git a/Tests/Reqnroll.VisualStudio.Tests/ImplicitUsings.cs b/Tests/Reqnroll.VisualStudio.Tests/ImplicitUsings.cs
index 41f2c6b0..c13241be 100644
--- a/Tests/Reqnroll.VisualStudio.Tests/ImplicitUsings.cs
+++ b/Tests/Reqnroll.VisualStudio.Tests/ImplicitUsings.cs
@@ -10,7 +10,7 @@
global using Microsoft.VisualStudio.Text.Tagging;
global using Microsoft.VisualStudio.TextManager.Interop;
global using Microsoft.VisualStudio.Utilities;
-global using Moq;
+global using NSubstitute;
global using Reqnroll.VisualStudio.Analytics;
global using Reqnroll.VisualStudio.Common;
global using Reqnroll.VisualStudio.Configuration;
diff --git a/Tests/Reqnroll.VisualStudio.Tests/Reqnroll.VisualStudio.Tests.csproj b/Tests/Reqnroll.VisualStudio.Tests/Reqnroll.VisualStudio.Tests.csproj
index 6d3efd51..69f8a1b0 100644
--- a/Tests/Reqnroll.VisualStudio.Tests/Reqnroll.VisualStudio.Tests.csproj
+++ b/Tests/Reqnroll.VisualStudio.Tests/Reqnroll.VisualStudio.Tests.csproj
@@ -12,7 +12,7 @@
-
+
diff --git a/Tests/Reqnroll.VisualStudio.VsxStubs/ImplicitUsings.cs b/Tests/Reqnroll.VisualStudio.VsxStubs/ImplicitUsings.cs
index febd9c68..f95b2e1f 100644
--- a/Tests/Reqnroll.VisualStudio.VsxStubs/ImplicitUsings.cs
+++ b/Tests/Reqnroll.VisualStudio.VsxStubs/ImplicitUsings.cs
@@ -9,7 +9,7 @@
global using Microsoft.VisualStudio.TextManager.Interop;
global using Microsoft.VisualStudio.Threading;
global using Microsoft.VisualStudio.Utilities;
-global using Moq;
+global using NSubstitute;
global using Reqnroll.VisualStudio.Analytics;
global using Reqnroll.VisualStudio.Annotations;
global using Reqnroll.VisualStudio.Common;
diff --git a/Tests/Reqnroll.VisualStudio.VsxStubs/ProjectSystem/InMemoryStubProjectScope.cs b/Tests/Reqnroll.VisualStudio.VsxStubs/ProjectSystem/InMemoryStubProjectScope.cs
index 7e3baf8d..295d86df 100644
--- a/Tests/Reqnroll.VisualStudio.VsxStubs/ProjectSystem/InMemoryStubProjectScope.cs
+++ b/Tests/Reqnroll.VisualStudio.VsxStubs/ProjectSystem/InMemoryStubProjectScope.cs
@@ -1,6 +1,6 @@
namespace Reqnroll.VisualStudio.VsxStubs.ProjectSystem;
-public class InMemoryStubProjectScope : Mock, IProjectScope
+public class InMemoryStubProjectScope : IProjectScope
{
public List PackageReferencesList = new();
@@ -82,4 +82,4 @@ public InMemoryStubProjectScope UpdateConfigFile(string configFileName, string c
IdeScope.FileSystem.File.SetLastWriteTimeUtc(configFileFullPath, DateTime.UtcNow);
return this;
}
-}
+}
\ No newline at end of file
diff --git a/Tests/Reqnroll.VisualStudio.VsxStubs/ProjectSystem/StubIdeScope.cs b/Tests/Reqnroll.VisualStudio.VsxStubs/ProjectSystem/StubIdeScope.cs
index 44ad0e99..37d113c4 100644
--- a/Tests/Reqnroll.VisualStudio.VsxStubs/ProjectSystem/StubIdeScope.cs
+++ b/Tests/Reqnroll.VisualStudio.VsxStubs/ProjectSystem/StubIdeScope.cs
@@ -1,15 +1,19 @@
namespace Reqnroll.VisualStudio.VsxStubs.ProjectSystem;
-public class StubIdeScope : Mock, IIdeScope, IDisposable
+public class StubIdeScope : IIdeScope, IDisposable
{
- public StubIdeScope(ITestOutputHelper testOutputHelper) : base(MockBehavior.Strict)
+ private readonly IIdeScope _substitute;
+
+ public StubIdeScope(ITestOutputHelper testOutputHelper)
{
+ _substitute = Substitute.For();
+
AnalyticsTransmitter = new StubAnalyticsTransmitter(Logger);
MonitoringService =
new MonitoringService(
AnalyticsTransmitter,
- new Mock().Object,
- new Mock().Object);
+ Substitute.For(),
+ Substitute.For());
CompositeLogger.Add(new DeveroomXUnitLogger(testOutputHelper));
CompositeLogger.Add(StubLogger);
@@ -17,9 +21,9 @@ public StubIdeScope(ITestOutputHelper testOutputHelper) : base(MockBehavior.Stri
VsxStubObjects.Initialize();
SetupFireAndForget();
- SetupFireAndForgetOnBackgroundThread();
+ SetupFireAndForgetOnBackgroundThread((action, callerName) => BackGroundTasks = BackGroundTasks.Add($"{Interlocked.Increment(ref _taskId)}:{callerName}", action));
- CurrentTextView = new Mock(MockBehavior.Strict).Object;
+ CurrentTextView = Substitute.For();
TextViewFactory = (inputText, filePath) =>
BasicTextViewFactory(inputText, filePath, VsContentTypes.FeatureFile);
BackgroundTaskTokenSource = new DebuggableCancellationTokenSource(TimeSpan.FromSeconds(20));
@@ -64,7 +68,7 @@ public IProjectScope GetProject(ITextBuffer textBuffer) =>
public IFileSystemForVs FileSystem { get; private set; } = new MockFileSystemForVs();
public IDeveroomOutputPaneServices DeveroomOutputPaneServices { get; } =
- new Mock().Object;
+ Substitute.For();
public IDeveroomErrorListServices DeveroomErrorListServices => StubErrorListServices;
public IMonitoringService MonitoringService { get; }
@@ -84,7 +88,7 @@ public bool GetTextBuffer(SourceLocation sourceLocation, out ITextBuffer textBuf
return true;
}
- textBuffer = new Mock(MockBehavior.Strict).Object;
+ textBuffer = Substitute.For();
return false;
}
@@ -96,19 +100,18 @@ public SyntaxTree GetSyntaxTree(ITextBuffer textBuffer)
public void FireAndForget(Func action, Action onException,
[CallerMemberName] string callerName = "???")
- => Object.FireAndForget(action, onException, callerName);
+ => _substitute.FireAndForget(action, onException, callerName);
private void SetupFireAndForget()
{
- Setup(s => s.FireAndForget(It.IsAny>(), It.IsAny>(),
- It.IsAny()))
- .Callback((Func action, Action onException, string _) =>
+ _substitute.When(s => s.FireAndForget(Arg.Any>(), Arg.Any>(), Arg.Any()))
+ .Do(callInfo =>
{
+ var action = callInfo.Arg>();
+ var onException = callInfo.Arg>();
try
{
-#pragma warning disable VSTHRD002
action().Wait();
-#pragma warning restore
}
catch (Exception e)
{
@@ -119,7 +122,7 @@ private void SetupFireAndForget()
}
public void FireAndForgetOnBackgroundThread(Func action, string callerName = "???") =>
- Object.FireAndForgetOnBackgroundThread(action, callerName);
+ _substitute.FireAndForgetOnBackgroundThread(action, callerName);
private volatile int _taskId;
@@ -134,11 +137,15 @@ public Task StartAndWaitAllBackgroundTasks()
return Task.WhenAll(allTasks);
}
- private void SetupFireAndForgetOnBackgroundThread()
+ public void SetupFireAndForgetOnBackgroundThread(Action, string> callback)
{
- Setup(s => s.FireAndForgetOnBackgroundThread(It.IsAny>(), It.IsAny()))
- .Callback((Func action, string callerName) =>
- BackGroundTasks = BackGroundTasks.Add($"{Interlocked.Increment(ref _taskId)}:{callerName}", action));
+ _substitute.When(s => s.FireAndForgetOnBackgroundThread(Arg.Any>(), Arg.Any()))
+ .Do(callInfo =>
+ {
+ var action = callInfo.Arg>();
+ var callerName = callInfo.Arg();
+ callback(action, callerName);
+ });
}
public Task RunOnUiThread(Action action)
@@ -158,7 +165,7 @@ public void OpenIfNotOpened(string path)
public IProjectScope[] GetProjectsWithFeatureFiles() => ProjectScopes.ToArray();
- public IDisposable CreateUndoContext(string undoLabel) => new Mock().Object;
+ public IDisposable CreateUndoContext(string undoLabel) => Substitute.For();
public IWpfTextView CreateTextView(TestText inputText, string filePath)
{
@@ -197,4 +204,4 @@ public void Dispose()
BackgroundTaskTokenSource.Cancel();
BackgroundTaskTokenSource.Dispose();
}
-}
+}
\ No newline at end of file
diff --git a/Tests/Reqnroll.VisualStudio.VsxStubs/ProjectSystem/StubProjectSettingsProvider.cs b/Tests/Reqnroll.VisualStudio.VsxStubs/ProjectSystem/StubProjectSettingsProvider.cs
index 6e09df4c..b3995cde 100644
--- a/Tests/Reqnroll.VisualStudio.VsxStubs/ProjectSystem/StubProjectSettingsProvider.cs
+++ b/Tests/Reqnroll.VisualStudio.VsxStubs/ProjectSystem/StubProjectSettingsProvider.cs
@@ -1,8 +1,8 @@
namespace Reqnroll.VisualStudio.VsxStubs.ProjectSystem;
-public class StubProjectSettingsProvider : Mock, IProjectSettingsProvider
+public class StubProjectSettingsProvider : IProjectSettingsProvider
{
- public StubProjectSettingsProvider(InMemoryStubProjectScope inMemoryStubProjectScope) : base(MockBehavior.Strict)
+ public StubProjectSettingsProvider(InMemoryStubProjectScope inMemoryStubProjectScope)
{
ProjectSettings = new ProjectSettings(
DeveroomProjectKind.ReqnrollTestProject,
@@ -17,9 +17,6 @@ public StubProjectSettingsProvider(InMemoryStubProjectScope inMemoryStubProjectS
ReqnrollProjectTraits.CucumberExpression,
ProjectProgrammingLanguage.CSharp
);
-
- Setup(p => p.GetProjectSettings()).Returns(() => ProjectSettings);
- Setup(p => p.CheckProjectSettings()).Returns(() => ProjectSettings);
}
private ProjectSettings ProjectSettings { get; set; }
@@ -27,17 +24,17 @@ public StubProjectSettingsProvider(InMemoryStubProjectScope inMemoryStubProjectS
public DeveroomProjectKind Kind
{
get => ProjectSettings.Kind;
- set => ProjectSettings = ProjectSettings with {Kind = value};
+ set => ProjectSettings = ProjectSettings with { Kind = value };
}
public event EventHandler? WeakSettingsInitialized;
public event EventHandler? SettingsInitialized;
- public ProjectSettings GetProjectSettings() => Object.GetProjectSettings();
- public ProjectSettings CheckProjectSettings() => Object.CheckProjectSettings();
+ public ProjectSettings GetProjectSettings() => ProjectSettings;
+ public ProjectSettings CheckProjectSettings() => ProjectSettings;
public void InvokeWeakSettingsInitializedEvent()
{
- WeakSettingsInitialized!.Invoke(this, EventArgs.Empty);
+ WeakSettingsInitialized?.Invoke(this, EventArgs.Empty);
}
}
diff --git a/Tests/Reqnroll.VisualStudio.VsxStubs/Reqnroll.VisualStudio.VsxStubs.csproj b/Tests/Reqnroll.VisualStudio.VsxStubs/Reqnroll.VisualStudio.VsxStubs.csproj
index 6ac357af..52ca9479 100644
--- a/Tests/Reqnroll.VisualStudio.VsxStubs/Reqnroll.VisualStudio.VsxStubs.csproj
+++ b/Tests/Reqnroll.VisualStudio.VsxStubs/Reqnroll.VisualStudio.VsxStubs.csproj
@@ -11,7 +11,7 @@
-
+
diff --git a/Tests/Reqnroll.VisualStudio.VsxStubs/StepDefinitions/MockableDiscoveryService.cs b/Tests/Reqnroll.VisualStudio.VsxStubs/StepDefinitions/MockableDiscoveryService.cs
index 1ca3c67d..36bc1da4 100644
--- a/Tests/Reqnroll.VisualStudio.VsxStubs/StepDefinitions/MockableDiscoveryService.cs
+++ b/Tests/Reqnroll.VisualStudio.VsxStubs/StepDefinitions/MockableDiscoveryService.cs
@@ -6,8 +6,8 @@ namespace Reqnroll.VisualStudio.VsxStubs.StepDefinitions;
public class MockableDiscoveryService : DiscoveryService
{
public MockableDiscoveryService(IProjectScope projectScope,
- Mock discoveryResultProviderMock)
- : base(projectScope, discoveryResultProviderMock.Object, new ProjectBindingRegistryCache(projectScope.IdeScope))
+ IDiscoveryResultProvider discoveryResultProviderMock)
+ : base(projectScope, discoveryResultProviderMock, new ProjectBindingRegistryCache(projectScope.IdeScope))
{
}
@@ -23,7 +23,7 @@ public static MockableDiscoveryService Setup(IProjectScope projectScope, TimeSpa
public static MockableDiscoveryService SetupWithInitialStepDefinitions(IProjectScope projectScope,
StepDefinition[] stepDefinitions, TimeSpan discoveryDelay)
{
- var discoveryResultProviderMock = new Mock(MockBehavior.Strict);
+ var discoveryResultProviderMock = Substitute.For();
var allStepDefinitions = new List();
foreach (var stepDefinition in stepDefinitions)
@@ -60,8 +60,8 @@ public static MockableDiscoveryService SetupWithInitialStepDefinitions(IProjectS
InMemoryStubProjectBuilder.CreateOutputAssembly(projectScope);
discoveryResultProviderMock
- .Setup(ds => ds.RunDiscovery(It.IsAny(), It.IsAny(), It.IsAny()))
- .Returns(() =>
+ .RunDiscovery(Arg.Any(), Arg.Any(), Arg.Any())
+ .Returns(_ =>
{
Thread.Sleep(discoveryDelay); //make it a bit more realistic
return discoveryService.LastDiscoveryResult;
diff --git a/Tests/Reqnroll.VisualStudio.VsxStubs/StubProjectBindingRegistryCache.cs b/Tests/Reqnroll.VisualStudio.VsxStubs/StubProjectBindingRegistryCache.cs
index 8d87a58a..90da42e9 100644
--- a/Tests/Reqnroll.VisualStudio.VsxStubs/StubProjectBindingRegistryCache.cs
+++ b/Tests/Reqnroll.VisualStudio.VsxStubs/StubProjectBindingRegistryCache.cs
@@ -1,28 +1,30 @@
#nullable enable
namespace Reqnroll.VisualStudio.VsxStubs;
-public class StubProjectBindingRegistryCache : Mock, IProjectBindingRegistryCache
+public class StubProjectBindingRegistryCache : IProjectBindingRegistryCache
{
- public StubProjectBindingRegistryCache() : base(MockBehavior.Strict)
+ private readonly IProjectBindingRegistryCache _substitute;
+
+ public StubProjectBindingRegistryCache()
{
+ _substitute = Substitute.For();
+
Value = ProjectBindingRegistry.Invalid;
- Setup(c => c.Update(It.IsAny>>()))
- .Returns(async (Func> updateFunc) =>
- {
- Value = await updateFunc(Value);
- return Task.FromResult(Value);
- });
+ _substitute.Update(Arg.Any>>())
+ .Returns(async callInfo =>
+ {
+ var updateFunc = callInfo.Arg>>();
+ Value = await updateFunc(Value);
+ });
}
- public bool Processing { get; }
-
public event EventHandler? Changed;
public Task Update(Func updateFunc)
=> Update(registry => Task.FromResult(updateFunc(registry)));
public Task Update(Func> updateTask)
- => Object.Update(updateTask);
+ => _substitute.Update(updateTask);
public ProjectBindingRegistry Value { get; private set; }
public Task GetLatest() => throw new NotImplementedException();
diff --git a/Tests/Reqnroll.VisualStudio.VsxStubs/StubTextBuffer.cs b/Tests/Reqnroll.VisualStudio.VsxStubs/StubTextBuffer.cs
index a52de2a0..77416e63 100644
--- a/Tests/Reqnroll.VisualStudio.VsxStubs/StubTextBuffer.cs
+++ b/Tests/Reqnroll.VisualStudio.VsxStubs/StubTextBuffer.cs
@@ -1,20 +1,26 @@
namespace Reqnroll.VisualStudio.VsxStubs;
-public class StubTextBuffer : Mock, ITextBuffer2
+public class StubTextBuffer : ITextBuffer2
{
- public StubTextBuffer(IProjectScope projectScope) : base(MockBehavior.Strict)
+ private readonly ITextBuffer2 _substitute;
+
+ public StubTextBuffer(IProjectScope projectScope)
{
+ _substitute = Substitute.For();
+
Properties = new PropertyCollection();
Properties.AddProperty(typeof(IProjectScope), projectScope);
CurrentStubSnapshot = StubTextSnapshot.FromTextBuffer(this);
- var contentType = new Mock(MockBehavior.Strict);
- contentType.Setup(t => t.IsOfType(VsContentTypes.FeatureFile)).Returns(true);
- StubContentType = new StubContentType(Array.Empty(), VsContentTypes.FeatureFile,
- VsContentTypes.FeatureFile);
+ var contentType = Substitute.For();
+ contentType.IsOfType(VsContentTypes.FeatureFile).Returns(true);
+ StubContentType = new StubContentType(Array.Empty(), VsContentTypes.FeatureFile, VsContentTypes.FeatureFile);
+
+ _substitute.When(tb => tb.ChangedOnBackground += Arg.Any>())
+ .Do(info => _changedOnBackground += info.Arg>());
- SetupAdd(tb => tb.ChangedOnBackground += It.IsAny>());
- SetupRemove(tb => tb.ChangedOnBackground -= It.IsAny>());
+ _substitute.When(tb => tb.ChangedOnBackground -= Arg.Any>())
+ .Do(info => _changedOnBackground -= info.Arg>());
}
public StubContentType StubContentType { get; set; }
@@ -71,16 +77,8 @@ public void ChangeContentType(IContentType newContentType, object editTag)
public event EventHandler? ChangedOnBackground
{
- add
- {
- Object.ChangedOnBackground += value;
- _changedOnBackground += value;
- }
- remove
- {
- Object.ChangedOnBackground -= value;
- _changedOnBackground -= value;
- }
+ add => _substitute.ChangedOnBackground += value;
+ remove => _substitute.ChangedOnBackground -= value;
}
private event EventHandler? _changedOnBackground;
@@ -111,4 +109,4 @@ public void ModifyContent(string content)
{
CurrentStubSnapshot = CurrentStubSnapshot.WithText(content);
}
-}
+}
\ No newline at end of file
diff --git a/Tests/Reqnroll.VisualStudio.VsxStubs/StubTextSnapshot.cs b/Tests/Reqnroll.VisualStudio.VsxStubs/StubTextSnapshot.cs
index 728f323f..10fc42dd 100644
--- a/Tests/Reqnroll.VisualStudio.VsxStubs/StubTextSnapshot.cs
+++ b/Tests/Reqnroll.VisualStudio.VsxStubs/StubTextSnapshot.cs
@@ -86,13 +86,13 @@ public void SaveToFile(string filePath, bool replaceFile, Encoding encoding)
public static StubTextSnapshot FromTextBuffer(ITextBuffer textBuffer) =>
new(
- Mock.Of(MockBehavior.Strict),
+ Substitute.For(),
0,
0,
Array.Empty(),
textBuffer,
StubTextVersion2.Default with {TextBuffer = textBuffer},
- Mock.Of(MockBehavior.Strict),
+ Substitute.For(),
new TestText());
public StubTextSnapshot WithText(string testText)
diff --git a/Tests/Reqnroll.VisualStudio.VsxStubs/StubTextVersion2.cs b/Tests/Reqnroll.VisualStudio.VsxStubs/StubTextVersion2.cs
index fbb1d937..9b059888 100644
--- a/Tests/Reqnroll.VisualStudio.VsxStubs/StubTextVersion2.cs
+++ b/Tests/Reqnroll.VisualStudio.VsxStubs/StubTextVersion2.cs
@@ -10,10 +10,10 @@ public record StubTextVersion2(
: ITextVersion2
{
public static StubTextVersion2 Default = new(
- Mock.Of(m => m.Count == 0, MockBehavior.Strict),
+ Substitute.For(),
0,
- 0, Mock.Of(MockBehavior.Strict),
- 0, Mock.Of(MockBehavior.Strict));
+ 0, Substitute.For(),
+ 0, Substitute.For());
[CanBeNull] public ITextVersion Next { get; private set; } = null!;