RenderFragment
- это метод делегата, поэтому, когда вы пишете код, подобный следующему:
RenderFragment fragment = builder =>
{
builder.OpenElement(0, "p");
builder.CloseElement();
};
Вы не создаете материализованный артефакт, но объявляете делегата, который может быть вызван.
Таким образом, код Assert.Same(fragment, result);
сравнивает двух делегатов, которые явно не совпадают - они указывают на два разных метода.
Я полагаю, вам следует исследовать папку "test" источника Blazor Source
Этот раздел может сильно помочь
Техника, которую они применяют, заключается в проверке фреймов RenderTree
// 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));
Также этот раздел сTestRenderer , в котором есть этот код
protected RenderTreeFrame[] GetRenderTree(IComponent component)
{
var renderer = new TestRenderer();
renderer.AttachComponent(component);
component.SetParameters(ParameterCollection.Empty);
return renderer.LatestBatchReferenceFrames;
}
Посмотрите, как они проводят свои тесты, поскольку я не могу воспроизвести все это здесь, но это ключи ...