diff --git a/src/bunit/Extensions/RenderedComponentRenderExtensions.cs b/src/bunit/Extensions/RenderedComponentRenderExtensions.cs index b0535c8c2..c1d90689f 100644 --- a/src/bunit/Extensions/RenderedComponentRenderExtensions.cs +++ b/src/bunit/Extensions/RenderedComponentRenderExtensions.cs @@ -53,23 +53,21 @@ public static void Render(this IRenderedComponent render private static ParameterView ToParameterView(IReadOnlyCollection parameters) { - var paramDict = new Dictionary(StringComparer.Ordinal); - - foreach (var param in parameters) + if (parameters.Count == 0) { - var paramDict = new Dictionary(parameters.Count, StringComparer.Ordinal); + return ParameterView.Empty; + } - foreach (var param in parameters) - { - if (param.IsCascadingValue) - throw new InvalidOperationException($"You cannot provide a new cascading value through the {nameof(Render)} method."); - if (param.Name is null) - throw new InvalidOperationException("A parameters name is required."); + var paramDict = new Dictionary(parameters.Count, StringComparer.Ordinal); - paramDict.Add(param.Name, param.Value); - } + foreach (var param in parameters) + { + if (param.IsCascadingValue) + throw new InvalidOperationException($"You cannot provide a new cascading value through the {nameof(Render)} method."); + if (param.Name is null) + throw new InvalidOperationException("A parameter name is required."); - parameterView = ParameterView.FromDictionary(paramDict); + paramDict.Add(param.Name, param.Value); } return ParameterView.FromDictionary(paramDict); diff --git a/tests/bunit.tests/Rendering/DeterministicRenderTests.cs b/tests/bunit.tests/Rendering/DeterministicRenderTests.cs index ba4b8fa33..f5cef733b 100644 --- a/tests/bunit.tests/Rendering/DeterministicRenderTests.cs +++ b/tests/bunit.tests/Rendering/DeterministicRenderTests.cs @@ -5,7 +5,7 @@ public class DeterministicRenderTests : TestContext [Fact] public async Task BlockAsyncRenderWhenEventDispatched() { - var cut = RenderComponent(); + var cut = Render(); cut.Find("button").Click(); @@ -21,7 +21,7 @@ public async Task BlockAsyncRenderWhenEventDispatched() [Fact] public async Task BlockAsyncRenderWhenOnInitializedAsync() { - var cut = RenderComponent(); + var cut = Render(); cut.Find("p").TextContent.ShouldBe("False"); @@ -34,7 +34,7 @@ public async Task BlockTimerRendering() { var provider = new TriggerableTimeProvider(); Services.AddSingleton(provider); - var cut = RenderComponent(); + var cut = Render(); provider.TriggerTick(); @@ -62,7 +62,7 @@ public async Task WaitForDoesNotRenderIfConditionIsInitiallyMet() { var provider = new TriggerableTimeProvider(); Services.AddSingleton(provider); - var cut = RenderComponent(); + var cut = Render(); provider.TriggerTick(); // The condition is already met @@ -76,7 +76,7 @@ public async Task WaitForDoesNotRenderIfConditionIsInitiallyMet() public async Task CanWaitForMultipleRenderCycles() { TaskCompletionSource tcs = new(TaskCreationOptions.RunContinuationsAsynchronously); - var cut = RenderComponent( + var cut = Render( p => p.Add( s => s.CreateTask, () => tcs.Task)); @@ -103,7 +103,7 @@ public async Task CanWaitForMultipleRenderCycles() [Fact] public void TaskCompletedLeadsToSynchronousRender() { - var cut = RenderComponent( + var cut = Render( p => p.Add(s => s.CreateTask, () => Task.CompletedTask)); cut.Find("p").TextContent.ShouldBe("4"); @@ -112,7 +112,7 @@ public void TaskCompletedLeadsToSynchronousRender() [Fact] public void CompleteSynchronousCallWithStateHasChangedDoesntBlock() { - var cut = RenderComponent(); + var cut = Render(); cut.Find("p").TextContent.ShouldBe("4"); } @@ -121,7 +121,7 @@ public void CompleteSynchronousCallWithStateHasChangedDoesntBlock() public async Task ContinueWith() { var tcs = new TaskCompletionSource(TaskCreationOptions.RunContinuationsAsynchronously); - var cut = RenderComponent( + var cut = Render( p => p.Add( s => s.CreateTask, () => tcs.Task.ContinueWith(_ => { }, TaskScheduler.Default))); @@ -134,7 +134,7 @@ public async Task ContinueWith() [Fact] public async Task CallingInvokeAsyncWrappedInTaskRun() { - var cut = RenderComponent(); + var cut = Render(); var renderTask = Task.Run(() => cut.Instance.Render(10)); await cut.WaitForAssertionAsync(() => cut.Find("p").TextContent.ShouldBe("10")); @@ -144,7 +144,7 @@ public async Task CallingInvokeAsyncWrappedInTaskRun() [Fact] public async Task ConfigureAwaitComponent() { - var cut = RenderComponent(); + var cut = Render(); cut.Find("p").TextContent.ShouldBe("0"); cut.Instance.Tcs.SetResult();