@@ -170,7 +170,7 @@ public virtual RenderedComponent<TComponent> Render<TComponent>(RenderFragment r
170
170
/// <param name="renderFragment">The render fragment to render.</param>
171
171
/// <returns>The <see cref="RenderedFragment"/>.</returns>
172
172
public virtual RenderedFragment Render ( RenderFragment renderFragment )
173
- => this . RenderInsideRenderTree ( renderFragment ) ;
173
+ => RenderInsideRenderTree ( renderFragment ) ;
174
174
175
175
/// <summary>
176
176
/// Dummy method required to allow Blazor's compiler to generate
@@ -187,4 +187,34 @@ private BunitRenderer CreateRenderer()
187
187
? new BunitRenderer ( Services , logger )
188
188
: new BunitRenderer ( Services , logger , componentActivator ) ;
189
189
}
190
+
191
+ /// <summary>
192
+ /// Renders a component, declared in the <paramref name="renderFragment"/>, inside the <see cref="BunitContext.RenderTree"/>.
193
+ /// </summary>
194
+ /// <typeparam name="TComponent">The type of component to render.</typeparam>
195
+ /// <param name="renderFragment">The <see cref="RenderInsideRenderTree"/> that contains a declaration of the component.</param>
196
+ /// <returns>A <see cref="RenderedComponent{TComponent}"/>.</returns>
197
+ private RenderedComponent < TComponent > RenderInsideRenderTree < TComponent > ( RenderFragment renderFragment )
198
+ where TComponent : IComponent
199
+ {
200
+ var baseResult = RenderInsideRenderTree ( renderFragment ) ;
201
+ return Renderer . FindComponent < TComponent > ( baseResult ) ;
202
+ }
203
+
204
+ /// <summary>
205
+ /// Renders a fragment, declared in the <paramref name="renderFragment"/>, inside the <see cref="BunitContext.RenderTree"/>.
206
+ /// </summary>
207
+ /// <param name="renderFragment">The <see cref="RenderInsideRenderTree"/> to render.</param>
208
+ /// <returns>A <see cref="RenderedFragment"/>.</returns>
209
+ private RenderedComponent < FragmentContainer > RenderInsideRenderTree ( RenderFragment renderFragment )
210
+ {
211
+ // Wrap fragment in a FragmentContainer so the start of the test supplied
212
+ // razor fragment can be found after, and then wrap in any layout components
213
+ // added to the test context.
214
+ var wrappedInFragmentContainer = FragmentContainer . Wrap ( renderFragment ) ;
215
+ var wrappedInRenderTree = RenderTree . Wrap ( wrappedInFragmentContainer ) ;
216
+ var resultBase = Renderer . RenderFragment ( wrappedInRenderTree ) ;
217
+
218
+ return Renderer . FindComponent < FragmentContainer > ( resultBase ) ;
219
+ }
190
220
}
0 commit comments