@@ -170,7 +170,7 @@ public virtual RenderedComponent<TComponent> Render<TComponent>(RenderFragment r
170170 /// <param name="renderFragment">The render fragment to render.</param>
171171 /// <returns>The <see cref="RenderedFragment"/>.</returns>
172172 public virtual RenderedFragment Render ( RenderFragment renderFragment )
173- => this . RenderInsideRenderTree ( renderFragment ) ;
173+ => RenderInsideRenderTree ( renderFragment ) ;
174174
175175 /// <summary>
176176 /// Dummy method required to allow Blazor's compiler to generate
@@ -187,4 +187,34 @@ private BunitRenderer CreateRenderer()
187187 ? new BunitRenderer ( Services , logger )
188188 : new BunitRenderer ( Services , logger , componentActivator ) ;
189189 }
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+ }
190220}
0 commit comments