|
|
@@ -3,6 +3,7 @@
|
|
|
|
|
|
using System;
|
|
|
using System.Collections.Generic;
|
|
|
+using System.Runtime.ExceptionServices;
|
|
|
using System.Text.Encodings.Web;
|
|
|
using System.Threading.Tasks;
|
|
|
using Microsoft.AspNetCore.Components.RenderTree;
|
|
|
@@ -19,16 +20,17 @@ namespace Microsoft.AspNetCore.Components.Rendering
|
|
|
public void RenderComponent_CanRenderEmptyElement()
|
|
|
{
|
|
|
// Arrange
|
|
|
+ var dispatcher = Renderer.CreateDefaultDispatcher();
|
|
|
var expectedHtml = new[] { "<", "p", ">", "</", "p", ">" };
|
|
|
var serviceProvider = new ServiceCollection().AddSingleton(new RenderFragment(rtb =>
|
|
|
{
|
|
|
rtb.OpenElement(0, "p");
|
|
|
rtb.CloseElement();
|
|
|
})).BuildServiceProvider();
|
|
|
- var htmlRenderer = new HtmlRenderer(serviceProvider, _encoder);
|
|
|
+ var htmlRenderer = new HtmlRenderer(serviceProvider, _encoder, dispatcher);
|
|
|
|
|
|
// Act
|
|
|
- var result = htmlRenderer.RenderComponent<TestComponent>(ParameterCollection.Empty);
|
|
|
+ var result = GetResult(dispatcher.Invoke(() => htmlRenderer.RenderComponent<TestComponent>(ParameterCollection.Empty)));
|
|
|
|
|
|
// Assert
|
|
|
Assert.Equal(expectedHtml, result);
|
|
|
@@ -38,6 +40,7 @@ namespace Microsoft.AspNetCore.Components.Rendering
|
|
|
public void RenderComponent_CanRenderSimpleComponent()
|
|
|
{
|
|
|
// Arrange
|
|
|
+ var dispatcher = Renderer.CreateDefaultDispatcher();
|
|
|
var expectedHtml = new[] { "<", "p", ">", "Hello world!", "</", "p", ">" };
|
|
|
var serviceProvider = new ServiceCollection().AddSingleton(new RenderFragment(rtb =>
|
|
|
{
|
|
|
@@ -45,10 +48,10 @@ namespace Microsoft.AspNetCore.Components.Rendering
|
|
|
rtb.AddContent(1, "Hello world!");
|
|
|
rtb.CloseElement();
|
|
|
})).BuildServiceProvider();
|
|
|
- var htmlRenderer = new HtmlRenderer(serviceProvider, _encoder);
|
|
|
+ var htmlRenderer = new HtmlRenderer(serviceProvider, _encoder, dispatcher);
|
|
|
|
|
|
// Act
|
|
|
- var result = htmlRenderer.RenderComponent<TestComponent>(ParameterCollection.Empty);
|
|
|
+ var result = GetResult(dispatcher.Invoke(() => htmlRenderer.RenderComponent<TestComponent>(ParameterCollection.Empty)));
|
|
|
|
|
|
// Assert
|
|
|
Assert.Equal(expectedHtml, result);
|
|
|
@@ -58,6 +61,7 @@ namespace Microsoft.AspNetCore.Components.Rendering
|
|
|
public void RenderComponent_HtmlEncodesContent()
|
|
|
{
|
|
|
// Arrange
|
|
|
+ var dispatcher = Renderer.CreateDefaultDispatcher();
|
|
|
var expectedHtml = new[] { "<", "p", ">", "<Hello world!>", "</", "p", ">" };
|
|
|
var serviceProvider = new ServiceCollection().AddSingleton(new RenderFragment(rtb =>
|
|
|
{
|
|
|
@@ -65,10 +69,10 @@ namespace Microsoft.AspNetCore.Components.Rendering
|
|
|
rtb.AddContent(1, "<Hello world!>");
|
|
|
rtb.CloseElement();
|
|
|
})).BuildServiceProvider();
|
|
|
- var htmlRenderer = new HtmlRenderer(serviceProvider, _encoder);
|
|
|
+ var htmlRenderer = new HtmlRenderer(serviceProvider, _encoder, dispatcher);
|
|
|
|
|
|
// Act
|
|
|
- var result = htmlRenderer.RenderComponent<TestComponent>(ParameterCollection.Empty);
|
|
|
+ var result = GetResult(dispatcher.Invoke(() => htmlRenderer.RenderComponent<TestComponent>(ParameterCollection.Empty)));
|
|
|
|
|
|
// Assert
|
|
|
Assert.Equal(expectedHtml, result);
|
|
|
@@ -79,6 +83,7 @@ namespace Microsoft.AspNetCore.Components.Rendering
|
|
|
public void RenderComponent_DoesNotEncodeMarkup()
|
|
|
{
|
|
|
// Arrange
|
|
|
+ var dispatcher = Renderer.CreateDefaultDispatcher();
|
|
|
var expectedHtml = new[] { "<", "p", ">", "<span>Hello world!</span>", "</", "p", ">" };
|
|
|
var serviceProvider = new ServiceCollection().AddSingleton(new RenderFragment(rtb =>
|
|
|
{
|
|
|
@@ -86,10 +91,10 @@ namespace Microsoft.AspNetCore.Components.Rendering
|
|
|
rtb.AddMarkupContent(1, "<span>Hello world!</span>");
|
|
|
rtb.CloseElement();
|
|
|
})).BuildServiceProvider();
|
|
|
- var htmlRenderer = new HtmlRenderer(serviceProvider, _encoder);
|
|
|
+ var htmlRenderer = new HtmlRenderer(serviceProvider, _encoder, dispatcher);
|
|
|
|
|
|
// Act
|
|
|
- var result = htmlRenderer.RenderComponent<TestComponent>(ParameterCollection.Empty);
|
|
|
+ var result = GetResult(dispatcher.Invoke(() => htmlRenderer.RenderComponent<TestComponent>(ParameterCollection.Empty)));
|
|
|
|
|
|
// Assert
|
|
|
Assert.Equal(expectedHtml, result);
|
|
|
@@ -100,6 +105,7 @@ namespace Microsoft.AspNetCore.Components.Rendering
|
|
|
public void RenderComponent_CanRenderWithAttributes()
|
|
|
{
|
|
|
// Arrange
|
|
|
+ var dispatcher = Renderer.CreateDefaultDispatcher();
|
|
|
var expectedHtml = new[] { "<", "p", " ", "class", "=", "\"", "lead", "\"", ">", "Hello world!", "</", "p", ">" };
|
|
|
var serviceProvider = new ServiceCollection().AddSingleton(new RenderFragment(rtb =>
|
|
|
{
|
|
|
@@ -109,10 +115,10 @@ namespace Microsoft.AspNetCore.Components.Rendering
|
|
|
rtb.CloseElement();
|
|
|
})).BuildServiceProvider();
|
|
|
|
|
|
- var htmlRenderer = new HtmlRenderer(serviceProvider, _encoder);
|
|
|
+ var htmlRenderer = new HtmlRenderer(serviceProvider, _encoder, dispatcher);
|
|
|
|
|
|
// Act
|
|
|
- var result = htmlRenderer.RenderComponent<TestComponent>(ParameterCollection.Empty);
|
|
|
+ var result = GetResult(dispatcher.Invoke(() => htmlRenderer.RenderComponent<TestComponent>(ParameterCollection.Empty)));
|
|
|
|
|
|
// Assert
|
|
|
Assert.Equal(expectedHtml, result);
|
|
|
@@ -122,6 +128,7 @@ namespace Microsoft.AspNetCore.Components.Rendering
|
|
|
public void RenderComponent_HtmlEncodesAttributeValues()
|
|
|
{
|
|
|
// Arrange
|
|
|
+ var dispatcher = Renderer.CreateDefaultDispatcher();
|
|
|
var expectedHtml = new[] { "<", "p", " ", "class", "=", "\"", "<lead", "\"", ">", "Hello world!", "</", "p", ">" };
|
|
|
var serviceProvider = new ServiceCollection().AddSingleton(new RenderFragment(rtb =>
|
|
|
{
|
|
|
@@ -131,10 +138,10 @@ namespace Microsoft.AspNetCore.Components.Rendering
|
|
|
rtb.CloseElement();
|
|
|
})).BuildServiceProvider();
|
|
|
|
|
|
- var htmlRenderer = new HtmlRenderer(serviceProvider, _encoder);
|
|
|
+ var htmlRenderer = new HtmlRenderer(serviceProvider, _encoder, dispatcher);
|
|
|
|
|
|
// Act
|
|
|
- var result = htmlRenderer.RenderComponent<TestComponent>(ParameterCollection.Empty);
|
|
|
+ var result = GetResult(dispatcher.Invoke(() => htmlRenderer.RenderComponent<TestComponent>(ParameterCollection.Empty)));
|
|
|
|
|
|
// Assert
|
|
|
Assert.Equal(expectedHtml, result);
|
|
|
@@ -144,6 +151,7 @@ namespace Microsoft.AspNetCore.Components.Rendering
|
|
|
public void RenderComponent_CanRenderBooleanAttributes()
|
|
|
{
|
|
|
// Arrange
|
|
|
+ var dispatcher = Renderer.CreateDefaultDispatcher();
|
|
|
var expectedHtml = new[] { "<", "input", " ", "disabled", " />" };
|
|
|
var serviceProvider = new ServiceCollection().AddSingleton(new RenderFragment(rtb =>
|
|
|
{
|
|
|
@@ -152,10 +160,10 @@ namespace Microsoft.AspNetCore.Components.Rendering
|
|
|
rtb.CloseElement();
|
|
|
})).BuildServiceProvider();
|
|
|
|
|
|
- var htmlRenderer = new HtmlRenderer(serviceProvider, _encoder);
|
|
|
+ var htmlRenderer = new HtmlRenderer(serviceProvider, _encoder, dispatcher);
|
|
|
|
|
|
// Act
|
|
|
- var result = htmlRenderer.RenderComponent<TestComponent>(ParameterCollection.Empty);
|
|
|
+ var result = GetResult(dispatcher.Invoke(() => htmlRenderer.RenderComponent<TestComponent>(ParameterCollection.Empty)));
|
|
|
|
|
|
// Assert
|
|
|
Assert.Equal(expectedHtml, result);
|
|
|
@@ -165,6 +173,7 @@ namespace Microsoft.AspNetCore.Components.Rendering
|
|
|
public void RenderComponent_DoesNotRenderBooleanAttributesWhenValueIsFalse()
|
|
|
{
|
|
|
// Arrange
|
|
|
+ var dispatcher = Renderer.CreateDefaultDispatcher();
|
|
|
var expectedHtml = new[] { "<", "input", " />" };
|
|
|
var serviceProvider = new ServiceCollection().AddSingleton(new RenderFragment(rtb =>
|
|
|
{
|
|
|
@@ -173,10 +182,10 @@ namespace Microsoft.AspNetCore.Components.Rendering
|
|
|
rtb.CloseElement();
|
|
|
})).BuildServiceProvider();
|
|
|
|
|
|
- var htmlRenderer = new HtmlRenderer(serviceProvider, _encoder);
|
|
|
+ var htmlRenderer = new HtmlRenderer(serviceProvider, _encoder, dispatcher);
|
|
|
|
|
|
// Act
|
|
|
- var result = htmlRenderer.RenderComponent<TestComponent>(ParameterCollection.Empty);
|
|
|
+ var result = GetResult(dispatcher.Invoke(() => htmlRenderer.RenderComponent<TestComponent>(ParameterCollection.Empty)));
|
|
|
|
|
|
// Assert
|
|
|
Assert.Equal(expectedHtml, result);
|
|
|
@@ -186,6 +195,7 @@ namespace Microsoft.AspNetCore.Components.Rendering
|
|
|
public void RenderComponent_CanRenderWithChildren()
|
|
|
{
|
|
|
// Arrange
|
|
|
+ var dispatcher = Renderer.CreateDefaultDispatcher();
|
|
|
var expectedHtml = new[] { "<", "p", ">", "<", "span", ">", "Hello world!", "</", "span", ">", "</", "p", ">" };
|
|
|
var serviceProvider = new ServiceCollection().AddSingleton(new RenderFragment(rtb =>
|
|
|
{
|
|
|
@@ -196,10 +206,10 @@ namespace Microsoft.AspNetCore.Components.Rendering
|
|
|
rtb.CloseElement();
|
|
|
})).BuildServiceProvider();
|
|
|
|
|
|
- var htmlRenderer = new HtmlRenderer(serviceProvider, _encoder);
|
|
|
+ var htmlRenderer = new HtmlRenderer(serviceProvider, _encoder, dispatcher);
|
|
|
|
|
|
// Act
|
|
|
- var result = htmlRenderer.RenderComponent<TestComponent>(ParameterCollection.Empty);
|
|
|
+ var result = GetResult(dispatcher.Invoke(() => htmlRenderer.RenderComponent<TestComponent>(ParameterCollection.Empty)));
|
|
|
|
|
|
// Assert
|
|
|
Assert.Equal(expectedHtml, result);
|
|
|
@@ -209,6 +219,7 @@ namespace Microsoft.AspNetCore.Components.Rendering
|
|
|
public void RenderComponent_CanRenderWithMultipleChildren()
|
|
|
{
|
|
|
// Arrange
|
|
|
+ var dispatcher = Renderer.CreateDefaultDispatcher();
|
|
|
var expectedHtml = new[] { "<", "p", ">",
|
|
|
"<", "span", ">", "Hello world!", "</", "span", ">",
|
|
|
"<", "span", ">", "Bye Bye world!", "</", "span", ">",
|
|
|
@@ -226,10 +237,10 @@ namespace Microsoft.AspNetCore.Components.Rendering
|
|
|
rtb.CloseElement();
|
|
|
})).BuildServiceProvider();
|
|
|
|
|
|
- var htmlRenderer = new HtmlRenderer(serviceProvider, _encoder);
|
|
|
+ var htmlRenderer = new HtmlRenderer(serviceProvider, _encoder, dispatcher);
|
|
|
|
|
|
// Act
|
|
|
- var result = htmlRenderer.RenderComponent<TestComponent>(ParameterCollection.Empty);
|
|
|
+ var result = GetResult(dispatcher.Invoke(() => htmlRenderer.RenderComponent<TestComponent>(ParameterCollection.Empty)));
|
|
|
|
|
|
// Assert
|
|
|
Assert.Equal(expectedHtml, result);
|
|
|
@@ -239,6 +250,7 @@ namespace Microsoft.AspNetCore.Components.Rendering
|
|
|
public void RenderComponent_CanRenderComponentWithChildrenComponents()
|
|
|
{
|
|
|
// Arrange
|
|
|
+ var dispatcher = Renderer.CreateDefaultDispatcher();
|
|
|
var expectedHtml = new[] {
|
|
|
"<", "p", ">", "<", "span", ">", "Hello world!", "</", "span", ">", "</", "p", ">",
|
|
|
"<", "span", ">", "Child content!", "</", "span", ">"
|
|
|
@@ -255,10 +267,10 @@ namespace Microsoft.AspNetCore.Components.Rendering
|
|
|
rtb.CloseComponent();
|
|
|
})).BuildServiceProvider();
|
|
|
|
|
|
- var htmlRenderer = new HtmlRenderer(serviceProvider, _encoder);
|
|
|
+ var htmlRenderer = new HtmlRenderer(serviceProvider, _encoder, dispatcher);
|
|
|
|
|
|
// Act
|
|
|
- var result = htmlRenderer.RenderComponent<TestComponent>(ParameterCollection.Empty);
|
|
|
+ var result = GetResult(dispatcher.Invoke(() => htmlRenderer.RenderComponent<TestComponent>(ParameterCollection.Empty)));
|
|
|
|
|
|
// Assert
|
|
|
Assert.Equal(expectedHtml, result);
|
|
|
@@ -268,6 +280,7 @@ namespace Microsoft.AspNetCore.Components.Rendering
|
|
|
public void RenderComponent_ComponentReferenceNoops()
|
|
|
{
|
|
|
// Arrange
|
|
|
+ var dispatcher = Renderer.CreateDefaultDispatcher();
|
|
|
var expectedHtml = new[] {
|
|
|
"<", "p", ">", "<", "span", ">", "Hello world!", "</", "span", ">", "</", "p", ">",
|
|
|
"<", "span", ">", "Child content!", "</", "span", ">"
|
|
|
@@ -285,10 +298,10 @@ namespace Microsoft.AspNetCore.Components.Rendering
|
|
|
rtb.CloseComponent();
|
|
|
})).BuildServiceProvider();
|
|
|
|
|
|
- var htmlRenderer = new HtmlRenderer(serviceProvider, _encoder);
|
|
|
+ var htmlRenderer = new HtmlRenderer(serviceProvider, _encoder, dispatcher);
|
|
|
|
|
|
// Act
|
|
|
- var result = htmlRenderer.RenderComponent<TestComponent>(ParameterCollection.Empty);
|
|
|
+ var result = GetResult(dispatcher.Invoke(() => htmlRenderer.RenderComponent<TestComponent>(ParameterCollection.Empty)));
|
|
|
|
|
|
// Assert
|
|
|
Assert.Equal(expectedHtml, result);
|
|
|
@@ -298,6 +311,7 @@ namespace Microsoft.AspNetCore.Components.Rendering
|
|
|
public void RenderComponent_CanPassParameters()
|
|
|
{
|
|
|
// Arrange
|
|
|
+ var dispatcher = Renderer.CreateDefaultDispatcher();
|
|
|
var expectedHtml = new[] {
|
|
|
"<", "p", ">", "<", "input", " ", "value", "=", "\"", "5", "\"", " />", "</", "p", ">" };
|
|
|
|
|
|
@@ -315,16 +329,16 @@ namespace Microsoft.AspNetCore.Components.Rendering
|
|
|
.AddSingleton(new Func<ParameterCollection, RenderFragment>(Content))
|
|
|
.BuildServiceProvider();
|
|
|
|
|
|
- var htmlRenderer = new HtmlRenderer(serviceProvider, _encoder);
|
|
|
+ var htmlRenderer = new HtmlRenderer(serviceProvider, _encoder, dispatcher);
|
|
|
Action<UIChangeEventArgs> change = (UIChangeEventArgs changeArgs) => throw new InvalidOperationException();
|
|
|
|
|
|
// Act
|
|
|
- var result = htmlRenderer.RenderComponent<ComponentWithParameters>(
|
|
|
+ var result = GetResult(dispatcher.Invoke(() => htmlRenderer.RenderComponent<ComponentWithParameters>(
|
|
|
new ParameterCollection(new[] {
|
|
|
RenderTreeFrame.Element(0,string.Empty),
|
|
|
RenderTreeFrame.Attribute(1,"update",change),
|
|
|
RenderTreeFrame.Attribute(2,"value",5)
|
|
|
- }, 0));
|
|
|
+ }, 0))));
|
|
|
|
|
|
// Assert
|
|
|
Assert.Equal(expectedHtml, result);
|
|
|
@@ -334,6 +348,7 @@ namespace Microsoft.AspNetCore.Components.Rendering
|
|
|
public void RenderComponent_CanRenderComponentWithRenderFragmentContent()
|
|
|
{
|
|
|
// Arrange
|
|
|
+ var dispatcher = Renderer.CreateDefaultDispatcher();
|
|
|
var expectedHtml = new[] {
|
|
|
"<", "p", ">", "<", "span", ">", "Hello world!", "</", "span", ">", "</", "p", ">" };
|
|
|
var serviceProvider = new ServiceCollection().AddSingleton(new RenderFragment(rtb =>
|
|
|
@@ -347,10 +362,10 @@ namespace Microsoft.AspNetCore.Components.Rendering
|
|
|
rtb.CloseElement();
|
|
|
})).BuildServiceProvider();
|
|
|
|
|
|
- var htmlRenderer = new HtmlRenderer(serviceProvider, _encoder);
|
|
|
+ var htmlRenderer = new HtmlRenderer(serviceProvider, _encoder, dispatcher);
|
|
|
|
|
|
// Act
|
|
|
- var result = htmlRenderer.RenderComponent<TestComponent>(ParameterCollection.Empty);
|
|
|
+ var result = GetResult(dispatcher.Invoke(() => htmlRenderer.RenderComponent<TestComponent>(ParameterCollection.Empty)));
|
|
|
|
|
|
// Assert
|
|
|
Assert.Equal(expectedHtml, result);
|
|
|
@@ -360,6 +375,7 @@ namespace Microsoft.AspNetCore.Components.Rendering
|
|
|
public void RenderComponent_ElementRefsNoops()
|
|
|
{
|
|
|
// Arrange
|
|
|
+ var dispatcher = Renderer.CreateDefaultDispatcher();
|
|
|
var expectedHtml = new[] {
|
|
|
"<", "p", ">", "<", "span", ">", "Hello world!", "</", "span", ">", "</", "p", ">" };
|
|
|
var serviceProvider = new ServiceCollection().AddSingleton(new RenderFragment(rtb =>
|
|
|
@@ -374,15 +390,29 @@ namespace Microsoft.AspNetCore.Components.Rendering
|
|
|
rtb.CloseElement();
|
|
|
})).BuildServiceProvider();
|
|
|
|
|
|
- var htmlRenderer = new HtmlRenderer(serviceProvider, _encoder);
|
|
|
+ var htmlRenderer = new HtmlRenderer(serviceProvider, _encoder, dispatcher);
|
|
|
|
|
|
// Act
|
|
|
- var result = htmlRenderer.RenderComponent<TestComponent>(ParameterCollection.Empty);
|
|
|
+ var result = GetResult(dispatcher.Invoke(() => htmlRenderer.RenderComponent<TestComponent>(ParameterCollection.Empty)));
|
|
|
|
|
|
// Assert
|
|
|
Assert.Equal(expectedHtml, result);
|
|
|
}
|
|
|
|
|
|
+ private IEnumerable<string> GetResult(Task<IEnumerable<string>> task)
|
|
|
+ {
|
|
|
+ Assert.True(task.IsCompleted);
|
|
|
+ if (task.IsCompletedSuccessfully)
|
|
|
+ {
|
|
|
+ return task.Result;
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ ExceptionDispatchInfo.Capture(task.Exception).Throw();
|
|
|
+ throw new InvalidOperationException("We will never hit this line");
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
private class ComponentWithParameters : IComponent
|
|
|
{
|
|
|
public RenderHandle RenderHandle { get; private set; }
|
|
|
@@ -406,17 +436,18 @@ namespace Microsoft.AspNetCore.Components.Rendering
|
|
|
public async Task CanRender_AsyncComponent()
|
|
|
{
|
|
|
// Arrange
|
|
|
+ var dispatcher = Renderer.CreateDefaultDispatcher();
|
|
|
var expectedHtml = new[] {
|
|
|
"<", "p", ">", "20", "</", "p", ">" };
|
|
|
var serviceProvider = new ServiceCollection().AddSingleton<AsyncComponent>().BuildServiceProvider();
|
|
|
|
|
|
- var htmlRenderer = new HtmlRenderer(serviceProvider, _encoder);
|
|
|
+ var htmlRenderer = new HtmlRenderer(serviceProvider, _encoder, dispatcher);
|
|
|
|
|
|
// Act
|
|
|
- var result = await htmlRenderer.RenderComponentAsync<AsyncComponent>(ParameterCollection.FromDictionary(new Dictionary<string, object>
|
|
|
+ var result = await dispatcher.InvokeAsync(() => htmlRenderer.RenderComponentAsync<AsyncComponent>(ParameterCollection.FromDictionary(new Dictionary<string, object>
|
|
|
{
|
|
|
["Value"] = 10
|
|
|
- }));
|
|
|
+ })));
|
|
|
|
|
|
// Assert
|
|
|
Assert.Equal(expectedHtml, result);
|
|
|
@@ -426,6 +457,7 @@ namespace Microsoft.AspNetCore.Components.Rendering
|
|
|
public async Task CanRender_NestedAsyncComponents()
|
|
|
{
|
|
|
// Arrange
|
|
|
+ var dispatcher = Renderer.CreateDefaultDispatcher();
|
|
|
var expectedHtml = new[] {
|
|
|
"<", "p", ">", "20", "</", "p", ">",
|
|
|
"<", "p", ">", "80", "</", "p", ">"
|
|
|
@@ -433,14 +465,14 @@ namespace Microsoft.AspNetCore.Components.Rendering
|
|
|
|
|
|
var serviceProvider = new ServiceCollection().AddSingleton<AsyncComponent>().BuildServiceProvider();
|
|
|
|
|
|
- var htmlRenderer = new HtmlRenderer(serviceProvider, _encoder);
|
|
|
+ var htmlRenderer = new HtmlRenderer(serviceProvider, _encoder, dispatcher);
|
|
|
|
|
|
// Act
|
|
|
- var result = await htmlRenderer.RenderComponentAsync<NestedAsyncComponent>(ParameterCollection.FromDictionary(new Dictionary<string, object>
|
|
|
+ var result = await dispatcher.InvokeAsync(() => htmlRenderer.RenderComponentAsync<NestedAsyncComponent>(ParameterCollection.FromDictionary(new Dictionary<string, object>
|
|
|
{
|
|
|
["Nested"] = false,
|
|
|
["Value"] = 10
|
|
|
- }));
|
|
|
+ })));
|
|
|
|
|
|
// Assert
|
|
|
Assert.Equal(expectedHtml, result);
|