我已经开始编写一个动态构建RenderFragment元素的方法。因此,我也正在尝试在该方法旁边编写单元测试。
我从一个非常基本的元素开始,但它失败了。下面是正在测试的具体方法:
public RenderFragment buildFragment(string element, string elementContent, string[] attribute, string[] attributeContent)
{
RenderFragment content = builder => {
builder.OpenElement(0, element);
if (attribute != null)
{
for (int i = 0; attribute.Length - 1 >= i; ++i)
{
builder.AddAttribute(0, attribute[i], attributeContent[i]);
}
}
if (!string.IsNullOrEmpty(elementContent))
{
builder.AddContent(0, elementContent);
}
builder.CloseElement();
};
return content;
}
这是我对使用 xUnit 方法的第一个基本测试:
public void BuildFragmentReturnsOneElement()
{
//Arrange
RenderFragment fragment = builder =>
{
builder.OpenElement(0, "p");
builder.CloseElement();
};
//Act
RenderFragment result = _dynamicContentHelper.buildFragment("p", string.Empty, null, null);
//Assert
Assert.Same(fragment, result);
}
我收到的错误信息是:
断言失败 期望值:RenderFragment { 方法 = Void b__2_0(Microsoft.AspNetCore.Blazor.RenderTree.RenderTreeBuilder), 目标 = <>c { } } 实际值:RenderFragment { 方法 = Void b__0(Microsoft.AspNetCore.Blazor.RenderTree.RenderTreeBuilder), 目标 = <>c__DisplayClass0_0 { attribute = null, attributeContent = null, element = "p", elementContent = "" } }
我不明白为什么我的片段对象上的目标与结果上的目标不同。
Microsoft.AspNetCore.Components
命名空间。这在2.1.2中不可用。我注意到他们提到了2.0。我将尝试根据您的RenderTreeFrame示例尝试一些东西,看看能否有所进展。 - bilpor