这个
RenderFragment
是委托方法,因此当您编写这样的代码时:
RenderFragment fragment = builder =>
{
builder.OpenElement(0, "p");
builder.CloseElement();
};
您不是在创建物化工件,而是声明一个可以调用的委托。
代码
Assert.Same(fragment, result);
因此,比较两个代表,这显然是不同的-他们指出两种不同的方法。
我相信你应该调查一下Blazor源的“test”文件夹
This section may help a lot
他们应用的技术是检查渲染树的框架
// Act
var frames = GetRenderTree(component);
// Assert
Assert.Collection(
frames,
frame => AssertFrame.Component(frame, "Test.RenderChildContent", 2, 0),
frame => AssertFrame.Attribute(frame, RenderTreeBuilder.ChildContent, 1),
frame => AssertFrame.Markup(frame, "\n <div></div>\n", 2));
Also, this section with a TestRenderer
里面有这个代码
protected RenderTreeFrame[] GetRenderTree(IComponent component)
{
var renderer = new TestRenderer();
renderer.AttachComponent(component);
component.SetParameters(ParameterCollection.Empty);
return renderer.LatestBatchReferenceFrames;
}
看看他们是如何进行测试的,因为我不能在这里全部重现,但这些是关键…